diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/class.c | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/src/class.c b/src/class.c index aa2485cb1..e5eeab4cb 100644 --- a/src/class.c +++ b/src/class.c @@ -105,12 +105,7 @@ make_metaclass(mrb_state *mrb, struct RClass *c) } sc = mrb_obj_alloc(mrb, MRB_TT_SCLASS, mrb->class_class); sc->mt = 0; - if (!c->super) { - sc->super = mrb->class_class; - } - else { - sc->super = c->super->c; - } + sc->super = c->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); @@ -1033,7 +1028,7 @@ mrb_init_class(mrb_state *mrb) mrb_name_class(mrb, mod, mrb_intern(mrb, "Module")); mrb_name_class(mrb, cls, mrb_intern(mrb, "Class")); - MRB_SET_INSTANCE_TT(mod, MRB_TT_MODULE); + mrb_undef_method(mrb, mod, mrb_intern(mrb, "new")); MRB_SET_INSTANCE_TT(cls, MRB_TT_CLASS); mrb_define_method(mrb, bob, "initialize", mrb_bob_init, ARGS_NONE()); mrb_define_method(mrb, bob, "!", mrb_bob_not, ARGS_NONE()); |
