summaryrefslogtreecommitdiffhomepage
path: root/src/gc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gc.c')
-rw-r--r--src/gc.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/gc.c b/src/gc.c
index 866d5bdc8..a1ff4d32b 100644
--- a/src/gc.c
+++ b/src/gc.c
@@ -640,6 +640,16 @@ obj_free(mrb_state *mrb, struct RBasic *obj)
mrb_gc_free_str(mrb, (struct RString*)obj);
break;
+ case MRB_TT_PROC:
+ {
+ struct RProc *p = (struct RProc*)obj;
+
+ if (!MRB_PROC_CFUNC_P(p) && p->body.irep) {
+ mrb_irep_decref(mrb, p->body.irep);
+ }
+ }
+ break;
+
case MRB_TT_RANGE:
mrb_free(mrb, ((struct RRange*)obj)->edges);
break;