summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2020-11-22 18:00:53 +0900
committerGitHub <[email protected]>2020-11-22 18:00:53 +0900
commitac2dfa8c470a0a6d5f47cfa06f7b8a688f1da466 (patch)
tree93975935b37ff49d203b7ae923886e7c4baf2259
parent1cd8b4c9331825e527bd720ed642539aff087936 (diff)
parentfd3576e8882d322b9a06cdf9d2d89e55bdd47e67 (diff)
downloadmruby-ac2dfa8c470a0a6d5f47cfa06f7b8a688f1da466.tar.gz
mruby-ac2dfa8c470a0a6d5f47cfa06f7b8a688f1da466.zip
Merge pull request #5170 from dearblue/gcmark
Fix GC mark leaks for `MRB_TT_BREAK`; fix #5168
-rw-r--r--src/gc.c9
1 files changed, 9 insertions, 0 deletions
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;