summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-04-20 15:44:56 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-04-20 15:44:56 +0900
commit62dae09bf6e2ac965ec7384100f56f40737cbd6f (patch)
treee2405226c0ba6aed5d11781ec97e4524548e5f96 /src
parentedd9fc6e75e26e154ab6af5c504f3bd38ecbfdd3 (diff)
downloadmruby-62dae09bf6e2ac965ec7384100f56f40737cbd6f.tar.gz
mruby-62dae09bf6e2ac965ec7384100f56f40737cbd6f.zip
Allow `mrb_objspace_each_objects()` to break iteration; ref #3359
Diffstat (limited to 'src')
-rw-r--r--src/gc.c3
1 files changed, 2 insertions, 1 deletions
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;