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 2018-05-21 13:36:21 +10:00
rodzic cac2eddc16
commit 6bd78741c1
1 zmienionych plików z 1 dodań i 0 usunięć

Wyświetl plik

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