diff options
| author | Yukihiro Matsumoto <[email protected]> | 2012-06-25 17:30:28 +0900 |
|---|---|---|
| committer | Yukihiro Matsumoto <[email protected]> | 2012-06-25 17:30:28 +0900 |
| commit | 8dc533ed5f5f4e63ef4b8391bfbe0dbb3b34052f (patch) | |
| tree | f3995b70acb9f3946a61d47f830235b082c6b59a /src | |
| parent | 19638ded7367520333caf1b070b221ea18e4c352 (diff) | |
| parent | 52b6d1c001bf9efb73aa6d58520e1444dbf4812d (diff) | |
| download | mruby-8dc533ed5f5f4e63ef4b8391bfbe0dbb3b34052f.tar.gz mruby-8dc533ed5f5f4e63ef4b8391bfbe0dbb3b34052f.zip | |
Merge branch 'master' of github.com:mruby/mruby
Diffstat (limited to 'src')
| -rw-r--r-- | src/class.c | 3 | ||||
| -rw-r--r-- | src/gc.c | 15 |
2 files changed, 18 insertions, 0 deletions
diff --git a/src/class.c b/src/class.c index cda7ce643..071d7aebe 100644 --- a/src/class.c +++ b/src/class.c @@ -1050,6 +1050,9 @@ mrb_class_new(mrb_state *mrb, struct RClass *super) mrb_check_inheritable(mrb, super); } c = boot_defclass(mrb, super); + if (super){ + MRB_SET_INSTANCE_TT(c, MRB_INSTANCE_TT(super)); + } make_metaclass(mrb, c); return 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; } |
