summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-06-16 08:25:34 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-06-16 08:25:34 +0900
commit6a66ce10b3bacb9d4fe8a58bec8820613bcfa5c3 (patch)
treebe6fccc23dfc3f31ce1e3939aeae1ef776911ad7 /src
parentebd6636a1e90dd12cb0ef112e7f1e0ca511f5d3b (diff)
downloadmruby-6a66ce10b3bacb9d4fe8a58bec8820613bcfa5c3.tar.gz
mruby-6a66ce10b3bacb9d4fe8a58bec8820613bcfa5c3.zip
Need to unshare env from top callinfo; fix #3685
Diffstat (limited to 'src')
-rw-r--r--src/vm.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/vm.c b/src/vm.c
index d69617be5..9607d3c32 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -1872,7 +1872,7 @@ RETRY_TRY_BLOCK:
}
ce = mrb->c->cibase + e->cioff;
- while (--ci > ce) {
+ while (ci >= ce) {
if (ci->env) {
mrb_env_unshare(mrb, ci->env);
}
@@ -1880,6 +1880,7 @@ RETRY_TRY_BLOCK:
localjump_error(mrb, LOCALJUMP_ERROR_RETURN);
goto L_RAISE;
}
+ ci--;
}
if (ce == mrb->c->cibase) {
localjump_error(mrb, LOCALJUMP_ERROR_RETURN);