diff --git a/src/vm.c b/src/vm.c index 0ff62efe1..d311a5800 100644 --- a/src/vm.c +++ b/src/vm.c @@ -708,7 +708,9 @@ prepare_missing(mrb_state *mrb, mrb_callinfo *ci, mrb_value recv, mrb_sym mid, m } else { mrb_assert(ci->nk == 15); - argv[1] = argv[ci->n]; + if (ci->n != CALL_MAXARGS) { + argv[1] = argv[ci->n]; /* keyword arguments */ + } argv[2] = blk; } argv[0] = args; /* must be replaced after saving argv[0] as it may be a keyword argument */