From fd3576e8882d322b9a06cdf9d2d89e55bdd47e67 Mon Sep 17 00:00:00 2001 From: dearblue Date: Sun, 22 Nov 2020 15:07:11 +0900 Subject: Fix GC mark leaks for `MRB_TT_BREAK`; fix #5168 --- src/gc.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src') diff --git a/src/gc.c b/src/gc.c index 7192e2fef..04724ab1e 100644 --- a/src/gc.c +++ b/src/gc.c @@ -760,6 +760,14 @@ gc_mark_children(mrb_state *mrb, mrb_gc *gc, struct RBasic *obj) mrb_gc_mark_range(mrb, (struct RRange*)obj); break; + case MRB_TT_BREAK: + { + struct RBreak *brk = (struct RBreak*)obj; + mrb_gc_mark(mrb, (struct RBasic*)mrb_break_proc_get(brk)); + mrb_gc_mark_value(mrb, mrb_break_value_get(brk)); + } + break; + default: break; } @@ -1019,6 +1027,7 @@ gc_gray_counts(mrb_state *mrb, mrb_gc *gc, struct RBasic *obj) case MRB_TT_PROC: case MRB_TT_RANGE: + case MRB_TT_BREAK: children+=2; break; -- cgit v1.2.3