From d2cad9ac5b8db89fc9d21f5795846f983236798c Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Thu, 20 Apr 2017 15:50:52 +0900 Subject: Disable GC during `gc_each_objects()`; fix #3616 --- src/gc.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src') diff --git a/src/gc.c b/src/gc.c index 833d35c71..c83ce9df8 100644 --- a/src/gc.c +++ b/src/gc.c @@ -1491,7 +1491,9 @@ static void gc_each_objects(mrb_state *mrb, mrb_gc *gc, mrb_each_object_callback *callback, void *data) { mrb_heap_page* page = gc->heaps; + mrb_bool old_disable = gc->disabled; + gc->disabled = TRUE; while (page != NULL) { RVALUE *p, *pend; @@ -1504,6 +1506,7 @@ gc_each_objects(mrb_state *mrb, mrb_gc *gc, mrb_each_object_callback *callback, page = page->next; } + gc->disabled = old_disable; } void -- cgit v1.2.3