From 62dae09bf6e2ac965ec7384100f56f40737cbd6f Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Thu, 20 Apr 2017 15:44:56 +0900 Subject: Allow `mrb_objspace_each_objects()` to break iteration; ref #3359 --- src/gc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/gc.c b/src/gc.c index 81f47eed7..833d35c71 100644 --- a/src/gc.c +++ b/src/gc.c @@ -1498,7 +1498,8 @@ gc_each_objects(mrb_state *mrb, mrb_gc *gc, mrb_each_object_callback *callback, p = objects(page); pend = p + MRB_HEAP_PAGE_SIZE; for (;p < pend; p++) { - (*callback)(mrb, &p->as.basic, data); + if ((*callback)(mrb, &p->as.basic, data) == MRB_EACH_OBJ_BREAK) + break; } page = page->next; -- cgit v1.2.3