Browse Source

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.
pull/3798/head
Damien George 7 years ago
parent
commit
6bd78741c1
  1. 1
      py/gc.c

1
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

Loading…
Cancel
Save