diff --git a/src/gc.c b/src/gc.c index 9263e7692..36286c424 100644 --- a/src/gc.c +++ b/src/gc.c @@ -791,20 +791,7 @@ obj_free(mrb_state *mrb, struct RBasic *obj, int end) { struct mrb_context *c = ((struct RFiber*)obj)->cxt; - if (c && c != mrb->root_c) { - if (!end && c->status != MRB_FIBER_TERMINATED) { - mrb_callinfo *ci = c->ci; - mrb_callinfo *ce = c->cibase; - - while (ce <= ci) { - struct REnv *e = ci->u.env; - if (e && !is_dead(&mrb->gc, (struct RBasic*)e) && - e->tt == MRB_TT_ENV && MRB_ENV_ONSTACK_P(e)) { - mrb_env_unshare(mrb, e, TRUE); - } - ci--; - } - } + if (c != mrb->root_c) { mrb_free_context(mrb, c); } }