Clear irep->outer when no Proc reference the irep; fix #3793

This commit is contained in:
Yukihiro "Matz" Matsumoto
2017-08-28 09:45:49 +09:00
parent fd927d786e
commit 15d48efa4b
+4
View File
@@ -815,7 +815,11 @@ obj_free(mrb_state *mrb, struct RBasic *obj, int end)
struct RProc *p = (struct RProc*)obj;
if (!MRB_PROC_CFUNC_P(p) && p->body.irep) {
int refcnt = p->body.irep->refcnt;
mrb_irep_decref(mrb, p->body.irep);
if (refcnt == 2) { /* reference only from irep */
p->body.irep->outer = NULL;
}
}
}
break;