From b667b052dd3ef911eedf98c289b8dc08eec4e162 Mon Sep 17 00:00:00 2001 From: dearblue Date: Sun, 25 Aug 2024 20:47:26 +0900 Subject: [PATCH] Remove `iterating` variable from `mrb_objspace_each_objects()` --- src/gc.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/gc.c b/src/gc.c index 8763c5208..28c275ce5 100644 --- a/src/gc.c +++ b/src/gc.c @@ -1501,11 +1501,8 @@ gc_each_objects(mrb_state *mrb, mrb_gc *gc, mrb_each_object_callback *callback, void mrb_objspace_each_objects(mrb_state *mrb, mrb_each_object_callback *callback, void *data) { - mrb_bool iterating = mrb->gc.iterating; - mrb_full_gc(mrb); - mrb->gc.iterating = TRUE; - if (iterating) { + if (mrb->gc.iterating) { gc_each_objects(mrb, &mrb->gc, callback, data); } else { @@ -1514,11 +1511,12 @@ mrb_objspace_each_objects(mrb_state *mrb, mrb_each_object_callback *callback, vo MRB_TRY(&c_jmp) { mrb->jmp = &c_jmp; + mrb->gc.iterating = TRUE; gc_each_objects(mrb, &mrb->gc, callback, data); mrb->jmp = prev_jmp; - mrb->gc.iterating = iterating; + mrb->gc.iterating = FALSE; } MRB_CATCH(&c_jmp) { - mrb->gc.iterating = iterating; + mrb->gc.iterating = FALSE; mrb->jmp = prev_jmp; MRB_THROW(prev_jmp); } MRB_END_EXC(&c_jmp);