summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-04-22 22:56:04 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-04-25 10:41:50 +0900
commit03cdb8e9dd3447115530418c2b8183c94dee2a53 (patch)
tree20d80e7590765c24c0299979b3b05c1f9fceec7e
parent058da1fed2ba39c78cefe2e3c87484d04b9ed94a (diff)
downloadmruby-03cdb8e9dd3447115530418c2b8183c94dee2a53.tar.gz
mruby-03cdb8e9dd3447115530418c2b8183c94dee2a53.zip
Should terminate nested iterations in each_object; ref #3359
-rw-r--r--src/gc.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/src/gc.c b/src/gc.c
index d9a18cd0e..da84ca3ad 100644
--- a/src/gc.c
+++ b/src/gc.c
@@ -1499,9 +1499,8 @@ gc_each_objects(mrb_state *mrb, mrb_gc *gc, mrb_each_object_callback *callback,
pend = p + MRB_HEAP_PAGE_SIZE;
for (;p < pend; p++) {
if ((*callback)(mrb, &p->as.basic, data) == MRB_EACH_OBJ_BREAK)
- break;
+ return;
}
-
page = page->next;
}
}