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--) {