summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--py/gc.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/py/gc.c b/py/gc.c
index 4f5793bf5..072572435 100644
--- a/py/gc.c
+++ b/py/gc.c
@@ -453,7 +453,7 @@ void *gc_alloc(size_t n_bytes, bool has_finaliser) {
size_t i;
size_t end_block;
size_t start_block;
- size_t n_free = 0;
+ size_t n_free;
int collected = !MP_STATE_MEM(gc_auto_collect_enabled);
#if MICROPY_GC_ALLOC_THRESHOLD
@@ -468,6 +468,7 @@ void *gc_alloc(size_t n_bytes, bool has_finaliser) {
for (;;) {
// look for a run of n_blocks available blocks
+ n_free = 0;
for (i = MP_STATE_MEM(gc_last_free_atb_index); i < MP_STATE_MEM(gc_alloc_table_byte_len); i++) {
byte a = MP_STATE_MEM(gc_alloc_table_start)[i];
if (ATB_0_IS_FREE(a)) { if (++n_free >= n_blocks) { i = i * BLOCKS_PER_ATB + 0; goto found; } } else { n_free = 0; }