should not unshare() reclaimed env objects; fix #3230

This commit is contained in:
Yukihiro "Matz" Matsumoto
2016-10-28 09:21:14 +09:00
parent c45ed46f28
commit 9a126278b6
+2 -1
View File
@@ -736,7 +736,8 @@ obj_free(mrb_state *mrb, struct RBasic *obj)
while (ce <= ci) {
struct REnv *e = ci->env;
if (e && !is_dead(&mrb->gc, e) && MRB_ENV_STACK_SHARED_P(e)) {
if (e && !is_dead(&mrb->gc, e) &&
e->tt == MRB_TT_ENV && MRB_ENV_STACK_SHARED_P(e)) {
mrb_env_unshare(mrb, e);
}
ci--;