proc.c: should not reference irep when copying failed.

It may cause broken reference count numbers.
This commit is contained in:
Yukihiro "Matz" Matsumoto
2022-01-01 21:02:58 +09:00
parent 3de9ddfb39
commit 28ccc664e5
+3 -3
View File
@@ -207,12 +207,12 @@ mrb_proc_copy(mrb_state *mrb, struct RProc *a, struct RProc *b)
/* already initialized proc */
return;
}
if (!MRB_PROC_CFUNC_P(b) && b->body.irep) {
mrb_irep_incref(mrb, (mrb_irep*)b->body.irep);
}
a->flags = b->flags;
a->body = b->body;
a->upper = b->upper;
if (!MRB_PROC_CFUNC_P(a) && a->body.irep) {
mrb_irep_incref(mrb, (mrb_irep*)a->body.irep);
}
a->e.env = b->e.env;
/* a->e.target_class = a->e.target_class; */
}