From 29d4eb6e200bf1d886d2737776fff9d615b67a73 Mon Sep 17 00:00:00 2001 From: Yukihiro Matsumoto Date: Thu, 2 Aug 2012 04:00:42 +0900 Subject: stack pos should be adjusted for CFUNC OP_EXEC --- src/vm.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/vm.c b/src/vm.c index c04216c94..875a6d94f 100644 --- a/src/vm.c +++ b/src/vm.c @@ -1551,6 +1551,9 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) ci->argc = 0; ci->target_class = mrb_class_ptr(regs[GETARG_A(i)]); + /* prepare stack */ + mrb->stack += a; + p = mrb_proc_new(mrb, mrb->irep[irep->idx+GETARG_Bx(i)]); p->target_class = ci->target_class; ci->proc = p; @@ -1569,8 +1572,8 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) irep = p->body.irep; pool = irep->pool; syms = irep->syms; - mrb->stack += a; stack_extend(mrb, irep->nregs, 1); + ci->nregs = irep->nregs; regs = mrb->stack; pc = irep->iseq; JUMP; -- cgit v1.2.3