From a45c23990bc6459af1b33e798d087bb15c0701e9 Mon Sep 17 00:00:00 2001 From: Yukihiro Matsumoto Date: Mon, 23 Apr 2012 18:14:18 +0900 Subject: fix inheritance chain; fix #41 --- src/class.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/class.c b/src/class.c index e3fe0933a..4abd0896e 100644 --- a/src/class.c +++ b/src/class.c @@ -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; } -- cgit v1.2.3