summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-objectspace
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2014-06-28 01:08:23 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2014-06-28 01:08:23 +0900
commit9a28ae921b9c789fa02a4931bebec46cd596acb4 (patch)
tree1e03d828e9b7b827a64ab40c200a880b08ff1d2f /mrbgems/mruby-objectspace
parentf9076230f2193a3fe2b30b795bd828a7479eba38 (diff)
downloadmruby-9a28ae921b9c789fa02a4931bebec46cd596acb4.tar.gz
mruby-9a28ae921b9c789fa02a4931bebec46cd596acb4.zip
ObjectSpace.each_object should filter out internal (i.e. obj->c == NULL) objects; ref #2429
Diffstat (limited to 'mrbgems/mruby-objectspace')
-rw-r--r--mrbgems/mruby-objectspace/src/mruby_objectspace.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/mrbgems/mruby-objectspace/src/mruby_objectspace.c b/mrbgems/mruby-objectspace/src/mruby_objectspace.c
index 8c7452c1e..e4d26221f 100644
--- a/mrbgems/mruby-objectspace/src/mruby_objectspace.c
+++ b/mrbgems/mruby-objectspace/src/mruby_objectspace.c
@@ -126,6 +126,9 @@ os_each_object_cb(mrb_state *mrb, struct RBasic *obj, void *ud)
return;
}
+ /* filter half baked (or internal) objects */
+ if (!obj->c) return;
+
/* filter class kind if target module defined */
if (d->target_module && !mrb_obj_is_kind_of(mrb, mrb_obj_value(obj), d->target_module)) {
return;