mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
gc should handle regexp and match objects
This commit is contained in:
@@ -369,6 +369,24 @@ gc_mark_children(mrb_state *mrb, struct RBasic *obj)
|
||||
}
|
||||
break;
|
||||
|
||||
#ifdef INCLUDE_REGEXP
|
||||
case MRB_TT_MATCH:
|
||||
{
|
||||
struct RMatch *m = (struct RMatch*)obj;
|
||||
|
||||
mrb_gc_mark(mrb, (struct RBasic*)m->str);
|
||||
mrb_gc_mark(mrb, (struct RBasic*)m->regexp);
|
||||
}
|
||||
break;
|
||||
case MRB_TT_REGEX:
|
||||
{
|
||||
struct RRegexp *r = (struct RRegexp*)obj;
|
||||
|
||||
mrb_gc_mark(mrb, (struct RBasic*)r->src);
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -443,7 +461,7 @@ obj_free(mrb_state *mrb, struct RBasic *obj)
|
||||
d->type->dfree(mrb, d->data);
|
||||
}
|
||||
}
|
||||
break;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
@@ -541,6 +559,15 @@ gc_gray_mark(mrb_state *mrb, struct RBasic *obj)
|
||||
children+=2;
|
||||
break;
|
||||
|
||||
#ifdef INCLUDE_REGEXP
|
||||
case MRB_TT_MATCH:
|
||||
children+=2;
|
||||
break;
|
||||
case MRB_TT_REGEX:
|
||||
children+=1;
|
||||
break;
|
||||
#endif
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user