summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-04-10 09:24:42 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-04-10 09:24:42 +0900
commit0cb501545cba12fd05ee033eea0c84dbb27e1936 (patch)
tree9a75e69b4e2eba32f8896135a19547574519da30
parentc063641ab0c32ab19715342a4856ed040a1fde14 (diff)
downloadmruby-0cb501545cba12fd05ee033eea0c84dbb27e1936.tar.gz
mruby-0cb501545cba12fd05ee033eea0c84dbb27e1936.zip
Fill omitted arguments by nil for non-strict Proc.
-rw-r--r--src/vm.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/vm.c b/src/vm.c
index 49f10c5a5..1f34a8c5b 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -1607,9 +1607,15 @@ RETRY_TRY_BLOCK:
if (argv0 != argv) {
value_move(&regs[1], argv, argc-mlen); /* m1 + o */
}
+ if (argc < m1) {
+ stack_clear(&regs[argc+1], m1-argc);
+ }
if (mlen) {
value_move(&regs[len-m2+1], &argv[argc-mlen], mlen);
}
+ if (mlen < m2) {
+ stack_clear(&regs[len-m2+mlen+1], m2-mlen);
+ }
if (r) {
regs[m1+o+1] = mrb_ary_new_capa(mrb, 0);
}