summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2012-06-24 06:32:48 -0700
committerYukihiro "Matz" Matsumoto <[email protected]>2012-06-24 06:32:48 -0700
commitbf747efdd107034f9032bc5c8c658887e8bd0239 (patch)
tree72125fbc017913e1356c1b60e34cedf9cab5292c /src
parentccde2d3be08d215f235e7a1820ab98ddb769abe6 (diff)
parente53eea76eb1da7cb9b5b2da52e3244a0f521972a (diff)
downloadmruby-bf747efdd107034f9032bc5c8c658887e8bd0239.tar.gz
mruby-bf747efdd107034f9032bc5c8c658887e8bd0239.zip
Merge pull request #317 from masamitsu-murase/fix_struct_new_gc
Fix GC of struct
Diffstat (limited to 'src')
-rw-r--r--src/gc.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/gc.c b/src/gc.c
index bf45ffcd3..93085db61 100644
--- a/src/gc.c
+++ b/src/gc.c
@@ -514,6 +514,12 @@ obj_free(mrb_state *mrb, struct RBasic *obj)
mrb_free(mrb, ((struct RRange*)obj)->edges);
break;
+#ifdef ENABLE_STRUCT
+ case MRB_TT_STRUCT:
+ mrb_free(mrb, ((struct RStruct*)obj)->ptr);
+ break;
+#endif
+
case MRB_TT_DATA:
{
struct RData *d = (struct RData*)obj;
@@ -632,6 +638,15 @@ gc_gray_mark(mrb_state *mrb, struct RBasic *obj)
break;
#endif
+#ifdef ENABLE_STRUCT
+ case MRB_TT_STRUCT:
+ {
+ struct RStruct *s = (struct RStruct*)obj;
+ children += s->len;
+ }
+ break;
+#endif
+
default:
break;
}