diff options
| author | dearblue <[email protected]> | 2020-11-22 15:07:11 +0900 |
|---|---|---|
| committer | dearblue <[email protected]> | 2020-11-22 15:09:01 +0900 |
| commit | fd3576e8882d322b9a06cdf9d2d89e55bdd47e67 (patch) | |
| tree | 93975935b37ff49d203b7ae923886e7c4baf2259 | |
| parent | 1cd8b4c9331825e527bd720ed642539aff087936 (diff) | |
| download | mruby-fd3576e8882d322b9a06cdf9d2d89e55bdd47e67.tar.gz mruby-fd3576e8882d322b9a06cdf9d2d89e55bdd47e67.zip | |
Fix GC mark leaks for `MRB_TT_BREAK`; fix #5168
| -rw-r--r-- | src/gc.c | 9 |
1 files changed, 9 insertions, 0 deletions
@@ -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; |
