mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
git push origin masterMerge branch 'take-cheeze-fix_each_obj_crash'
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user