From 16b5986d14863dc6a60be77deb9c714558eaf939 Mon Sep 17 00:00:00 2001 From: Go Saito Date: Thu, 5 Mar 2015 17:20:55 +0900 Subject: stack_extend in mrb_f_send mrb_f_send needs stack_extend like OP_SEND Signed-off-by: Go Saito --- src/vm.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src') 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; -- cgit v1.2.3