Commit fd3576e8 authored by dearblue's avatar dearblue

Fix GC mark leaks for `MRB_TT_BREAK`; fix #5168

parent 1cd8b4c9
...@@ -760,6 +760,14 @@ gc_mark_children(mrb_state *mrb, mrb_gc *gc, struct RBasic *obj) ...@@ -760,6 +760,14 @@ gc_mark_children(mrb_state *mrb, mrb_gc *gc, struct RBasic *obj)
mrb_gc_mark_range(mrb, (struct RRange*)obj); mrb_gc_mark_range(mrb, (struct RRange*)obj);
break; 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: default:
break; break;
} }
...@@ -1019,6 +1027,7 @@ gc_gray_counts(mrb_state *mrb, mrb_gc *gc, struct RBasic *obj) ...@@ -1019,6 +1027,7 @@ gc_gray_counts(mrb_state *mrb, mrb_gc *gc, struct RBasic *obj)
case MRB_TT_PROC: case MRB_TT_PROC:
case MRB_TT_RANGE: case MRB_TT_RANGE:
case MRB_TT_BREAK:
children+=2; children+=2;
break; break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment