diff options
| author | Patrick Hogan <[email protected]> | 2012-04-24 08:36:36 -0500 |
|---|---|---|
| committer | Patrick Hogan <[email protected]> | 2012-04-24 08:39:32 -0500 |
| commit | f41aae73fde191a50e30164b744d4874d59c6255 (patch) | |
| tree | 15f05bbd72db8f9702c33db3fd364dde220d3fa6 /src | |
| parent | 8ab46d241c9b502c2347792cc2330a46cf7c44bf (diff) | |
| download | mruby-f41aae73fde191a50e30164b744d4874d59c6255.tar.gz mruby-f41aae73fde191a50e30164b744d4874d59c6255.zip | |
Call dfree member on RData/MRB_TT_DATA when collected
Signed-off-by: Patrick Hogan <[email protected]>
Diffstat (limited to 'src')
| -rw-r--r-- | src/gc.c | 12 |
1 files changed, 10 insertions, 2 deletions
@@ -407,8 +407,8 @@ obj_free(mrb_state *mrb, struct RBasic *obj) struct REnv *e = (struct REnv *)obj; if (e->cioff < 0) { - mrb_free(mrb, e->stack); - e->stack = 0; + mrb_free(mrb, e->stack); + e->stack = 0; } } break; @@ -432,6 +432,14 @@ obj_free(mrb_state *mrb, struct RBasic *obj) case MRB_TT_STRUCT: case MRB_TT_EXCEPTION: break; + case MRB_TT_DATA: + { + struct RData *d = (struct RData *)obj; + if (d->type->dfree) { + d->type->dfree(mrb, d->data); + } + } + break; } obj->tt = MRB_TT_FREE; } |
