summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-objectspace/src/mruby_objectspace.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2014-06-28 01:09:36 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2014-06-28 01:09:36 +0900
commit344b7d819f70f4ab86b263d28d497e14db3b3ace (patch)
tree63491caaaa6e4e990672b80ba5a7853b0093682c /mrbgems/mruby-objectspace/src/mruby_objectspace.c
parent919af61766b1d06cd0e747c1d6257ada14c09eff (diff)
parent9726dbefb416f3f8b4fdf4cbe9f4d3bb5757003b (diff)
downloadmruby-344b7d819f70f4ab86b263d28d497e14db3b3ace.tar.gz
mruby-344b7d819f70f4ab86b263d28d497e14db3b3ace.zip
git push origin masterMerge branch 'take-cheeze-fix_each_obj_crash'
Diffstat (limited to 'mrbgems/mruby-objectspace/src/mruby_objectspace.c')
-rw-r--r--mrbgems/mruby-objectspace/src/mruby_objectspace.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/mrbgems/mruby-objectspace/src/mruby_objectspace.c b/mrbgems/mruby-objectspace/src/mruby_objectspace.c
index ba22fc990..e4d26221f 100644
--- a/mrbgems/mruby-objectspace/src/mruby_objectspace.c
+++ b/mrbgems/mruby-objectspace/src/mruby_objectspace.c
@@ -119,6 +119,16 @@ os_each_object_cb(mrb_state *mrb, struct RBasic *obj, void *ud)
return;
}
+ /* filter internal objects */
+ switch (obj->tt) {
+ case MRB_TT_ENV:
+ case MRB_TT_ICLASS:
+ 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;