diff options
Diffstat (limited to 'src/class.c')
| -rw-r--r-- | src/class.c | 7 |
1 files changed, 3 insertions, 4 deletions
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; } |
