From c45ed46f28b2d73aa36eeb0539cb0f3bc173b528 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Mon, 24 Oct 2016 01:30:31 +0900 Subject: macro mrb_bool() may evaluate arg multiple times; ref #3228 --- src/kernel.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/kernel.c') diff --git a/src/kernel.c b/src/kernel.c index 09b3d9337..df237cd46 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -960,10 +960,11 @@ obj_respond_to(mrb_state *mrb, mrb_value self) if (!respond_to_p) { rtm_id = mrb_intern_lit(mrb, "respond_to_missing?"); if (basic_obj_respond_to(mrb, self, rtm_id, !priv)) { - mrb_value args[2]; + mrb_value args[2], v; args[0] = mid; args[1] = mrb_bool_value(priv); - return mrb_bool_value(mrb_bool(mrb_funcall_argv(mrb, self, rtm_id, 2, args))); + v = mrb_funcall_argv(mrb, self, rtm_id, 2, args); + return mrb_bool_value(mrb_bool(v)); } } return mrb_bool_value(respond_to_p); -- cgit v1.2.3