summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2015-03-06 00:22:58 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2015-03-06 00:22:58 +0900
commitf32393a820912bcad8ea9e824aa6b8d286a9c267 (patch)
tree1c20f55ba3dbcd3bdea4a325a90a96eb4f36e2e0
parent7d67c573d78e765a8f84c47c193127bb60fc7414 (diff)
parent16b5986d14863dc6a60be77deb9c714558eaf939 (diff)
downloadmruby-f32393a820912bcad8ea9e824aa6b8d286a9c267.tar.gz
mruby-f32393a820912bcad8ea9e824aa6b8d286a9c267.zip
Merge pull request #2740 from govm/stack_extend-in-mrb_f_send
Fix #2739 stack_extend in mrb_f_send
-rw-r--r--src/vm.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/vm.c b/src/vm.c
index 7f3a3c151..390fdddea 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -472,6 +472,13 @@ mrb_f_send(mrb_state *mrb, mrb_value self)
return p->body.func(mrb, self);
}
+ if (ci->argc < 0) {
+ stack_extend(mrb, (p->body.irep->nregs < 3) ? 3 : p->body.irep->nregs, 3);
+ }
+ else {
+ stack_extend(mrb, p->body.irep->nregs, ci->argc+2);
+ }
+
ci->nregs = p->body.irep->nregs;
ci = cipush(mrb);
ci->nregs = 0;