summaryrefslogtreecommitdiffhomepage
path: root/src/vm.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-03-04 22:45:44 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-03-04 22:45:44 +0900
commit4f43db862a19df01720f72cc91925a497c7d7f45 (patch)
treefaf3162eee50f1d659a92e9385e3e50b775f030b /src/vm.c
parent3b40a2f6b56d9c81b7673cc50121a56ebf7dc8bd (diff)
downloadmruby-4f43db862a19df01720f72cc91925a497c7d7f45.tar.gz
mruby-4f43db862a19df01720f72cc91925a497c7d7f45.zip
Unshare popped TT_ENV objects.
Diffstat (limited to 'src/vm.c')
-rw-r--r--src/vm.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/vm.c b/src/vm.c
index 012499610..54877df23 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -1676,6 +1676,9 @@ RETRY_TRY_BLOCK:
ce = mrb->c->cibase + e->cioff;
while (--ci > ce) {
+ if (ci->env) {
+ mrb_env_unshare(mrb, ci->env);
+ }
if (ci->acc < 0) {
localjump_error(mrb, LOCALJUMP_ERROR_RETURN);
goto L_RAISE;
@@ -1727,6 +1730,9 @@ RETRY_TRY_BLOCK:
mrb->c->ci = ci;
break;
}
+ if (ci->env) {
+ mrb_env_unshare(mrb, ci->env);
+ }
ci--;
}
break;