diff --git a/src/vm.c b/src/vm.c index 0795dfc95..4ea55c581 100644 --- a/src/vm.c +++ b/src/vm.c @@ -526,13 +526,13 @@ MRB_API mrb_value mrb_funcall(mrb_state *mrb, mrb_value self, const char *name, mrb_int argc, ...) { mrb_value argv[MRB_FUNCALL_ARGC_MAX]; - va_list ap; mrb_sym mid = mrb_intern_cstr(mrb, name); if (argc > MRB_FUNCALL_ARGC_MAX) { mrb_raise(mrb, E_ARGUMENT_ERROR, "Too long arguments. (limit=" MRB_STRINGIZE(MRB_FUNCALL_ARGC_MAX) ")"); } + va_list ap; va_start(ap, argc); for (mrb_int i = 0; i < argc; i++) { argv[i] = va_arg(ap, mrb_value); @@ -545,12 +545,12 @@ MRB_API mrb_value mrb_funcall_id(mrb_state *mrb, mrb_value self, mrb_sym mid, mrb_int argc, ...) { mrb_value argv[MRB_FUNCALL_ARGC_MAX]; - va_list ap; if (argc > MRB_FUNCALL_ARGC_MAX) { mrb_raise(mrb, E_ARGUMENT_ERROR, "Too long arguments. (limit=" MRB_STRINGIZE(MRB_FUNCALL_ARGC_MAX) ")"); } + va_list ap; va_start(ap, argc); for (mrb_int i = 0; i < argc; i++) { argv[i] = va_arg(ap, mrb_value);