From cd05c669ca817a6847663df022a6d77ca6440fae Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Sat, 13 Jul 2013 10:41:09 +0900 Subject: make_metaclass should skip MRB_TT_ICLASS; close #1369 --- src/class.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'src/class.c') diff --git a/src/class.c b/src/class.c index a50d3d85a..787e514b1 100644 --- a/src/class.c +++ b/src/class.c @@ -69,15 +69,14 @@ prepare_singleton_class(mrb_state *mrb, struct RBasic *o) sc->iv = 0; if (o->tt == MRB_TT_CLASS) { c = (struct RClass*)o; - if (!c->super) { - sc->super = mrb->class_class; - } - else { + if (c->super) { sc->super = c->super->c; } } else if (o->tt == MRB_TT_SCLASS) { c = (struct RClass*)o; + while (c->super->tt == MRB_TT_ICLASS) + c = c->super; make_metaclass(mrb, c->super); sc->super = c->super->c; } -- cgit v1.2.3