summaryrefslogtreecommitdiffhomepage
path: root/src/gc.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-09-26 16:09:07 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-09-29 00:18:55 +0900
commit473b7d0efd210290d1093201254fa32b5473d5d1 (patch)
tree840fcced6dafbf87df7c883bb155196b91e96a93 /src/gc.c
parent7b01b969f55b9666068104cde3c6c53106ba8080 (diff)
downloadmruby-473b7d0efd210290d1093201254fa32b5473d5d1.tar.gz
mruby-473b7d0efd210290d1093201254fa32b5473d5d1.zip
Cut links from `irep` in heaps finalization.
Diffstat (limited to 'src/gc.c')
-rw-r--r--src/gc.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/gc.c b/src/gc.c
index 6d23354ae..196fb504c 100644
--- a/src/gc.c
+++ b/src/gc.c
@@ -817,7 +817,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) {
- mrb_irep_decref(mrb, p->body.irep);
+ mrb_irep *irep = p->body.irep;
+ if (end) {
+ mrb_irep_cutref(mrb, irep);
+ }
+ mrb_irep_decref(mrb, irep);
}
}
break;