From 6bd78741c13849da0570710ad6df80846df812c0 Mon Sep 17 00:00:00 2001 From: Damien George Date: Mon, 21 May 2018 13:36:21 +1000 Subject: [PATCH] py/gc: When GC threshold is hit don't unnecessarily collect twice. Without this, if GC threshold is hit and there is not enough memory left to satisfy the request, gc_collect() will run a second time and the search for memory will happen again and will fail again. Thanks to @adritium for pointing out this issue, see #3786. --- py/gc.c | 1 + 1 file changed, 1 insertion(+) diff --git a/py/gc.c b/py/gc.c index 38de51399..e92b81ece 100644 --- a/py/gc.c +++ b/py/gc.c @@ -453,6 +453,7 @@ void *gc_alloc(size_t n_bytes, bool has_finaliser) { if (!collected && MP_STATE_MEM(gc_alloc_amount) >= MP_STATE_MEM(gc_alloc_threshold)) { GC_EXIT(); gc_collect(); + collected = 1; GC_ENTER(); } #endif