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:
Damien George 2018-05-21 13:36:21 +10:00
parent cac2eddc16
commit 6bd78741c1
1 changed files with 1 additions and 0 deletions

View File

@ -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