summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2012-04-24 06:48:29 -0700
committerYukihiro "Matz" Matsumoto <[email protected]>2012-04-24 06:48:29 -0700
commit7edd7762b026258f66815a6593a7f71313f7e3e9 (patch)
tree15f05bbd72db8f9702c33db3fd364dde220d3fa6 /src
parent8ab46d241c9b502c2347792cc2330a46cf7c44bf (diff)
parentf41aae73fde191a50e30164b744d4874d59c6255 (diff)
downloadmruby-7edd7762b026258f66815a6593a7f71313f7e3e9.tar.gz
mruby-7edd7762b026258f66815a6593a7f71313f7e3e9.zip
Merge pull request #48 from pbhogan/call-dfree-on-rdata-at-gc
Call dfree member on RData / MRB_TT_DATA when collected
Diffstat (limited to 'src')
-rw-r--r--src/gc.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/gc.c b/src/gc.c
index 3b7a6fa7d..995678b0c 100644
--- a/src/gc.c
+++ b/src/gc.c
@@ -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;
}