From bf4e79cc62af809138bc7db7e54ece67080b5fa8 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Sat, 4 Feb 2017 14:07:33 +0900 Subject: [PATCH] `argv` may be modified when `mrb_funcall()` is called; fix #3419 Calling `mrb_funcall()` and `mrb_yield()` (and their related functions) are discouraged unless absolutely necessary, because it can cause this kind of issues very easily. --- src/kernel.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/kernel.c b/src/kernel.c index 76bd59469e..5ca1736c39 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -445,8 +445,11 @@ mrb_obj_extend_m(mrb_state *mrb, mrb_value self) { mrb_value *argv; mrb_int argc; + mrb_value args; mrb_get_args(mrb, "*", &argv, &argc); + args = mrb_ary_new_from_values(mrb, argc, argv); + argv = (mrb_value*)RARRAY_PTR(args); return mrb_obj_extend(mrb, argc, argv, self); }