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.
This commit is contained in:
parent
cac2eddc16
commit
6bd78741c1
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)) {
|
if (!collected && MP_STATE_MEM(gc_alloc_amount) >= MP_STATE_MEM(gc_alloc_threshold)) {
|
||||||
GC_EXIT();
|
GC_EXIT();
|
||||||
gc_collect();
|
gc_collect();
|
||||||
|
collected = 1;
|
||||||
GC_ENTER();
|
GC_ENTER();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue