From 9a126278b6f0fcfbec9c4a2ee391290d3ce2122f Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Fri, 28 Oct 2016 09:21:14 +0900 Subject: should not unshare() reclaimed env objects; fix #3230 --- src/gc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/gc.c b/src/gc.c index fe0184178..b29df1f02 100644 --- a/src/gc.c +++ b/src/gc.c @@ -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--; -- cgit v1.2.3