summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-04-01 12:42:11 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-04-01 12:42:11 +0900
commit195af525fba4dcf8900dbf7e67f0e8e3d62f9911 (patch)
treee8321fc90c84ca896663178e24acdc12ec76d508 /src
parent9eb2ed08794951d7614d5a9ed8518b2aa370d8b9 (diff)
downloadmruby-195af525fba4dcf8900dbf7e67f0e8e3d62f9911.tar.gz
mruby-195af525fba4dcf8900dbf7e67f0e8e3d62f9911.zip
Expand stack for method_missing; fix #3528
Diffstat (limited to 'src')
-rw-r--r--src/vm.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/vm.c b/src/vm.c
index 24a0a1db8..aa8b171bd 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -1227,6 +1227,10 @@ RETRY_TRY_BLOCK:
mid = missing;
if (n != CALL_MAXARGS) {
mrb_value blk = regs[bidx];
+
+ if (a+2 > irep->nregs) {
+ stack_extend(mrb, a+2, a+n+1);
+ }
regs[a+1] = mrb_ary_new_from_values(mrb, n, regs+a+1);
regs[a+2] = blk;
n = CALL_MAXARGS;