summaryrefslogtreecommitdiffhomepage
path: root/src/vm.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2015-07-30 16:45:31 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2015-07-30 16:45:31 +0900
commit89ebb0c4f15db5ed0e5e6d0715bfcf4fb0a1beac (patch)
treec5cd17eda4deb377618a068e2e443c1584c7d33b /src/vm.c
parent5b11d519d85fab458d93f636ec36d7197dc87dce (diff)
downloadmruby-89ebb0c4f15db5ed0e5e6d0715bfcf4fb0a1beac.tar.gz
mruby-89ebb0c4f15db5ed0e5e6d0715bfcf4fb0a1beac.zip
vm: execute ensure at the top of the fiber; fix #2903
Diffstat (limited to 'src/vm.c')
-rw-r--r--src/vm.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/vm.c b/src/vm.c
index 22ea177e0..765512a34 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -1497,6 +1497,9 @@ RETRY_TRY_BLOCK:
MRB_THROW(prev_jmp);
}
if (ci == mrb->c->cibase) {
+ while (eidx > 0) {
+ ecall(mrb, --eidx);
+ }
if (ci->ridx == 0) {
if (mrb->c == mrb->root_c) {
regs = mrb->c->stack = mrb->c->stbase;