summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/class.c9
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());