fix inheritance chain; fix #41

This commit is contained in:
Yukihiro Matsumoto
2012-04-23 18:14:18 +09:00
parent 0e2c8ec57c
commit a45c23990b
+6 -2
View File
@@ -111,7 +111,12 @@ make_metaclass(mrb_state *mrb, struct RClass *c)
}
sc = mrb_obj_alloc(mrb, MRB_TT_SCLASS, mrb->class_class);
sc->mt = 0;
sc->super = c->c;
if (!c->super) {
sc->super = mrb->class_class;
}
else {
sc->super = c->super->c;
}
c->c = sc;
mrb_field_write_barrier(mrb, (struct RBasic*)c, (struct RBasic*)sc);
mrb_field_write_barrier(mrb, (struct RBasic*)sc, (struct RBasic*)sc->super);
@@ -851,7 +856,6 @@ struct RClass *
mrb_module_new(mrb_state *mrb)
{
struct RClass *m = mrb_obj_alloc(mrb, MRB_TT_MODULE, mrb->module_class);
make_metaclass(mrb, m);
return m;
}