summaryrefslogtreecommitdiffhomepage
path: root/src/vm.c
diff options
context:
space:
mode:
authorFelix Jones <[email protected]>2016-11-10 20:01:59 +0000
committerFelix Jones <[email protected]>2016-11-10 20:01:59 +0000
commit70aa6dc38d75dd6b1e2c76f290bc576e36e36ea3 (patch)
tree2169dd999e756702a696dbd1be553b7560c2416b /src/vm.c
parentcc5f40b2dbcd8e0ea703e820dcf203619b5f1003 (diff)
parent3f002b6993df9ea4843e2479d706e7426d57bb5a (diff)
downloadmruby-70aa6dc38d75dd6b1e2c76f290bc576e36e36ea3.tar.gz
mruby-70aa6dc38d75dd6b1e2c76f290bc576e36e36ea3.zip
Merge branch 'master' into android.rake-ndk-clang
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 fcc69a1f9..a7418e6e7 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -1513,6 +1513,7 @@ RETRY_TRY_BLOCK:
/* A B return R(A) (B=normal,in-block return/break) */
if (mrb->exc) {
mrb_callinfo *ci;
+ mrb_value *stk;
int eidx;
L_RAISE:
@@ -1524,6 +1525,7 @@ RETRY_TRY_BLOCK:
if (ci->ridx == 0) goto L_STOP;
goto L_RESCUE;
}
+ stk = mrb->c->stack;
while (ci[0].ridx == ci[-1].ridx) {
cipop(mrb);
ci = mrb->c->ci;
@@ -1533,6 +1535,7 @@ RETRY_TRY_BLOCK:
MRB_THROW(prev_jmp);
}
if (ci == mrb->c->cibase) {
+ mrb->c->stack = stk;
while (eidx > 0) {
ecall(mrb, --eidx);
}