From ddcb30d84bfad619184a504b76e153bed0b875b9 Mon Sep 17 00:00:00 2001 From: ksss Date: Fri, 6 Jan 2017 16:27:19 +0900 Subject: Check intern object returned by mrb_check_string_type --- src/kernel.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src/kernel.c') diff --git a/src/kernel.c b/src/kernel.c index 5e44d73b4..0791bbd92 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -965,14 +965,17 @@ obj_respond_to(mrb_state *mrb, mrb_value self) } else { mrb_value tmp; - if (!mrb_string_p(mid)) { + if (mrb_string_p(mid)) { + tmp = mrb_check_intern_str(mrb, mid); + } + else { tmp = mrb_check_string_type(mrb, mid); if (mrb_nil_p(tmp)) { tmp = mrb_inspect(mrb, mid); mrb_raisef(mrb, E_TYPE_ERROR, "%S is not a symbol", tmp); } + tmp = mrb_check_intern_str(mrb, tmp); } - tmp = mrb_check_intern_str(mrb, mid); if (mrb_nil_p(tmp)) { respond_to_p = FALSE; } -- cgit v1.2.3