From 4f43db862a19df01720f72cc91925a497c7d7f45 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Sat, 4 Mar 2017 22:45:44 +0900 Subject: Unshare popped TT_ENV objects. --- src/vm.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/vm.c') 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; -- cgit v1.2.3