diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-05-04 22:58:53 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-05-04 22:58:53 +0900 |
| commit | f0be02fcf2364e6a3b7b1660bebc4d8e72646a43 (patch) | |
| tree | 09dfc1a2df3ac0bdae031a11a55db51a71da599b | |
| parent | 14fe510494c22526b7dd90d87067b2f0a53135cf (diff) | |
| parent | b59ac841af654179f27e3d19026eafe7638a1ee8 (diff) | |
| download | mruby-f0be02fcf2364e6a3b7b1660bebc4d8e72646a43.tar.gz mruby-f0be02fcf2364e6a3b7b1660bebc4d8e72646a43.zip | |
Merge pull request #2188 from takeru/dont_reset_ridx_eidx
Don't reset ridx,eidx. And fix for #1949
| -rw-r--r-- | src/vm.c | 10 |
1 files changed, 4 insertions, 6 deletions
@@ -2251,10 +2251,10 @@ RETRY_TRY_BLOCK: /* stop VM */ L_STOP: { - int n = mrb->c->ci->eidx; - - while (n--) { - ecall(mrb, n); + int eidx_stop = mrb->c->ci == mrb->c->cibase ? 0 : mrb->c->ci[-1].eidx; + int eidx = mrb->c->ci->eidx; + while (eidx > eidx_stop) { + ecall(mrb, --eidx); } } ERR_PC_CLR(mrb); @@ -2307,8 +2307,6 @@ mrb_toplevel_run(mrb_state *mrb, struct RProc *proc) } ci = cipush(mrb); ci->acc = CI_ACC_SKIP; - ci->eidx = 0; - ci->ridx = 0; ci->target_class = mrb->object_class; v = mrb_context_run(mrb, proc, mrb_top_self(mrb), 0); cipop(mrb); |
