summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/vm.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/vm.c b/src/vm.c
index 8aeb68fc2..8fe7c69b0 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -1770,7 +1770,7 @@ RETRY_TRY_BLOCK:
}
/* no rest arguments */
- if (argc < len) {
+ if (argc-kargs < len) {
int mlen = m2;
if (argc < m1+m2) {
mlen = m1 < argc ? argc - m1 : 0;
@@ -1778,7 +1778,6 @@ RETRY_TRY_BLOCK:
regs[blk_pos] = *blk; /* move block */
if (kd) regs[len + 1] = kdict;
- SET_NIL_VALUE(regs[argc+1]);
/* copy mandatory and optional arguments */
if (argv0 != argv) {
value_move(&regs[1], argv, argc-mlen); /* m1 + o */
@@ -1798,7 +1797,7 @@ RETRY_TRY_BLOCK:
regs[m1+o+1] = mrb_ary_new_capa(mrb, 0);
}
/* skip initailizer of passed arguments */
- if (o > 0 && argc-kargs >= m1+m2)
+ if (o > 0 && argc-kargs > m1+m2)
pc += (argc - kargs - m1 - m2)*3;
}
else {