diff options
| -rw-r--r-- | src/gc.c | 15 |
1 files changed, 15 insertions, 0 deletions
@@ -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; } |
