From 9e45eb185b50d7f45096b4edb0ec7ae49b6886b2 Mon Sep 17 00:00:00 2001 From: Yukihiro Matsumoto Date: Fri, 27 Apr 2012 19:15:19 +0900 Subject: object iv table can be NULL; close #66 --- src/kernel.c | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/kernel.c b/src/kernel.c index dce9e249b..d66f9c48d 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -686,17 +686,13 @@ mrb_obj_ivar_defined(mrb_state *mrb, mrb_value self) mrb_get_args(mrb, "o", &arg); mrb_sym mid = mrb_to_id(mrb, arg); - //if (!mrb_is_instance_id(id)) { - // mrb_name_error(id, "`%s' is not allowed as an instance variable name", mrb_sym2name(mrb, id)); - //} - //return mrb_ivar_defined(self, id); - k = kh_get(iv, h, mid); - if (k != kh_end(h)) { - return mrb_true_value(); - } - else { - return mrb_false_value(); + if (h) { + k = kh_get(iv, h, mid); + if (k != kh_end(h)) { + return mrb_true_value(); + } } + return mrb_false_value(); } /* 15.3.1.3.21 */ @@ -795,16 +791,15 @@ mrb_obj_instance_variables(mrb_state *mrb, mrb_value self) const char* p; ary = mrb_ary_new(mrb); - //if (mrb_is_instance_id(key)) { - // mrb_ary_push(mrb, ary, mrb_sym2name(mrb, key)); - //} - for (i=0;imt; + if (!h) return; for (i=0;iiv) break; h = mrb_obj_ptr(self)->iv; + if (!h) break; k = kh_get(iv, h, sym); if (k != kh_end(h)) { val = kh_value(h, k); -- cgit v1.2.3