git push origin masterMerge branch 'take-cheeze-fix_each_obj_crash'

This commit is contained in:
Yukihiro "Matz" Matsumoto
2014-06-28 01:09:36 +09:00
2 changed files with 14 additions and 0 deletions
@@ -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;
@@ -54,3 +54,7 @@ assert('ObjectSpace.each_object') do
assert_equal arys.length, arys_count
assert_true arys.length < objs.length
end
assert 'Check class pointer of ObjectSpace.each_object.' do
ObjectSpace.each_object { |obj| !obj }
end