From bdb51d1af42d0c87b9116f2d39db3c67fb7b96ab Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Tue, 18 Oct 2022 17:11:07 +0900 Subject: [PATCH] array.c (mrb_ary_push_m): adjust function order. ary_modify() and ary_expand_capa() may cause garbage collection and may make argv invalid (in the future). --- src/array.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/array.c b/src/array.c index 2103eac24..e902d5ba7 100644 --- a/src/array.c +++ b/src/array.c @@ -543,15 +543,15 @@ mrb_ary_push_m(mrb_state *mrb, mrb_value self) mrb_int len, len2; struct RArray *a; - argc = mrb_get_argc(mrb); - argv = mrb_get_argv(mrb); - a = mrb_ary_ptr(self); ary_modify(mrb, a); + argc = mrb_get_argc(mrb); + a = mrb_ary_ptr(self); len = ARY_LEN(a); len2 = len + argc; if (ARY_CAPA(a) < len2) { ary_expand_capa(mrb, a, len2); } + argv = mrb_get_argv(mrb); array_copy(ARY_PTR(a)+len, argv, argc); ARY_SET_LEN(a, len2); while (argc--) {