range.c (mrb_gc_mark_range): return size

If not initialized, size is zero, otherwise two.
This commit is contained in:
Yukihiro "Matz" Matsumoto
2024-03-15 23:36:30 +09:00
parent f13daee2f5
commit b913824d47
3 changed files with 11 additions and 10 deletions
+5 -4
View File
@@ -687,8 +687,7 @@ gc_mark_children(mrb_state *mrb, mrb_gc *gc, struct RBasic *obj)
break;
case MRB_TT_RANGE:
mrb_gc_mark_range(mrb, (struct RRange*)obj);
children+=2;
children += mrb_gc_mark_range(mrb, (struct RRange*)obj);
break;
case MRB_TT_BREAK:
@@ -705,8 +704,10 @@ gc_mark_children(mrb_state *mrb, mrb_gc *gc, struct RBasic *obj)
mrb_gc_mark(mrb, (struct RBasic*)((struct RException*)obj)->mesg);
children++;
}
mrb_gc_mark(mrb, (struct RBasic*)((struct RException*)obj)->backtrace);
children++;
if (((struct RException*)obj)->backtrace) {
mrb_gc_mark(mrb, (struct RBasic*)((struct RException*)obj)->backtrace);
children++;
}
break;
case MRB_TT_BACKTRACE:
+5 -5
View File
@@ -437,13 +437,13 @@ mrb_get_values_at(mrb_state *mrb, mrb_value obj, mrb_int olen, mrb_int argc, con
return result;
}
void
size_t
mrb_gc_mark_range(mrb_state *mrb, struct RRange *r)
{
if (RANGE_INITIALIZED_P(r)) {
mrb_gc_mark_value(mrb, RANGE_BEG(r));
mrb_gc_mark_value(mrb, RANGE_END(r));
}
if (!RANGE_INITIALIZED_P(r)) return 0;
mrb_gc_mark_value(mrb, RANGE_BEG(r));
mrb_gc_mark_value(mrb, RANGE_END(r));
return 2;
}
MRB_API struct RRange*