From 9a1f58874953e37af538a8fde3792817a88e4e1c Mon Sep 17 00:00:00 2001 From: Masamitsu MURASE Date: Sun, 24 Jun 2012 17:29:41 +0900 Subject: Modify obj_free to free instances of Struct. --- src/gc.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src') diff --git a/src/gc.c b/src/gc.c index a7537a015..23d22765c 100644 --- a/src/gc.c +++ b/src/gc.c @@ -502,6 +502,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; -- cgit v1.2.3 From e53eea76eb1da7cb9b5b2da52e3244a0f521972a Mon Sep 17 00:00:00 2001 From: Masamitsu MURASE Date: Sun, 24 Jun 2012 17:38:20 +0900 Subject: Modify gc_gray_mark for Struct. --- src/gc.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src') diff --git a/src/gc.c b/src/gc.c index 23d22765c..1010a6749 100644 --- a/src/gc.c +++ b/src/gc.c @@ -626,6 +626,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; } -- cgit v1.2.3