summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--py/qstr.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/py/qstr.c b/py/qstr.c
index a3c9612c6..08c3e2505 100644
--- a/py/qstr.c
+++ b/py/qstr.c
@@ -127,14 +127,12 @@ void qstr_init(void) {
STATIC const byte *find_qstr(qstr q) {
// search pool for this qstr
- for (qstr_pool_t *pool = MP_STATE_VM(last_pool); pool != NULL; pool = pool->prev) {
- if (q >= pool->total_prev_len) {
- return pool->qstrs[q - pool->total_prev_len];
- }
+ // total_prev_len==0 in the final pool, so the loop will always terminate
+ qstr_pool_t *pool = MP_STATE_VM(last_pool);
+ while (q < pool->total_prev_len) {
+ pool = pool->prev;
}
-
- // not found
- return 0;
+ return pool->qstrs[q - pool->total_prev_len];
}
// qstr_mutex must be taken while in this function