diff options
| author | Yukihiro Matsumoto <[email protected]> | 2012-08-02 04:00:42 +0900 |
|---|---|---|
| committer | Yukihiro Matsumoto <[email protected]> | 2012-08-02 04:00:42 +0900 |
| commit | 29d4eb6e200bf1d886d2737776fff9d615b67a73 (patch) | |
| tree | 706b8187000ad7b7b50f268f1b1f4d57422125db /src/vm.c | |
| parent | 1549502079ed1b3b7bbae66e661e4a15a9a3f3d6 (diff) | |
| download | mruby-29d4eb6e200bf1d886d2737776fff9d615b67a73.tar.gz mruby-29d4eb6e200bf1d886d2737776fff9d615b67a73.zip | |
stack pos should be adjusted for CFUNC OP_EXEC
Diffstat (limited to 'src/vm.c')
| -rw-r--r-- | src/vm.c | 5 |
1 files changed, 4 insertions, 1 deletions
@@ -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; |
