summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-11-29 12:16:16 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-11-29 12:16:16 +0900
commit3e67a116d1d4545c97e8042d094ba9eddd77b441 (patch)
tree339a12161a2ef774667f173ddf3674102f849e22 /src
parentafa53809e2633adccfd0681809b531e7e74b31e5 (diff)
downloadmruby-3e67a116d1d4545c97e8042d094ba9eddd77b441.tar.gz
mruby-3e67a116d1d4545c97e8042d094ba9eddd77b441.zip
Call all ensure clauses pushed at `OP_STOP`.
Diffstat (limited to 'src')
-rw-r--r--src/vm.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/vm.c b/src/vm.c
index c5639130d..975899256 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -2884,12 +2884,11 @@ RETRY_TRY_BLOCK:
CASE(OP_STOP) {
/* stop VM */
L_STOP:
- {
- int epos = mrb->c->ci->epos;
-
- while (mrb->c->eidx > epos) {
- ecall(mrb);
- }
+ while (mrb->c->ci > mrb->c->cibase) {
+ cipop(mrb);
+ }
+ while (mrb->c->eidx > 0) {
+ ecall(mrb);
}
ERR_PC_CLR(mrb);
mrb->jmp = prev_jmp;