From f9076230f2193a3fe2b30b795bd828a7479eba38 Mon Sep 17 00:00:00 2001 From: take_cheeze Date: Sat, 28 Jun 2014 00:45:47 +0900 Subject: Fix crash in method call in `ObjectSpace.each_object` block. * Filter `MRB_TT_ENV` and `MRB_TT_ICLASS`. * Set `mrb->string_class` in `mrb_init_exception` instead. --- mrbgems/mruby-objectspace/src/mruby_objectspace.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'mrbgems/mruby-objectspace/src/mruby_objectspace.c') diff --git a/mrbgems/mruby-objectspace/src/mruby_objectspace.c b/mrbgems/mruby-objectspace/src/mruby_objectspace.c index ba22fc990..8c7452c1e 100644 --- a/mrbgems/mruby-objectspace/src/mruby_objectspace.c +++ b/mrbgems/mruby-objectspace/src/mruby_objectspace.c @@ -119,6 +119,13 @@ 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 class kind if target module defined */ if (d->target_module && !mrb_obj_is_kind_of(mrb, mrb_obj_value(obj), d->target_module)) { return; -- cgit v1.2.3