diff options
| author | Yukihiro Matsumoto <[email protected]> | 2012-05-07 19:19:55 +0900 |
|---|---|---|
| committer | Yukihiro Matsumoto <[email protected]> | 2012-05-07 19:19:55 +0900 |
| commit | e93a17ed785548fa342cd5b1652b88d610aa4fdd (patch) | |
| tree | 9541855ef4e05d641b273f55271093734521061f /src | |
| parent | 4f1f243fe7e34acf6249d32cc68eedc8ff5bccbf (diff) | |
| download | mruby-e93a17ed785548fa342cd5b1652b88d610aa4fdd.tar.gz mruby-e93a17ed785548fa342cd5b1652b88d610aa4fdd.zip | |
gc should handle regexp and match objects
Diffstat (limited to 'src')
| -rw-r--r-- | src/gc.c | 29 |
1 files changed, 28 insertions, 1 deletions
@@ -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; } |
