diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-07-13 10:41:09 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-07-13 10:41:09 +0900 |
| commit | cd05c669ca817a6847663df022a6d77ca6440fae (patch) | |
| tree | 0e702cf12b1d0fab15a098807c14f4862ee95ed5 /src/class.c | |
| parent | b0d7902a2fdc1f303bf4cc2cb70e48420e6ea662 (diff) | |
| download | mruby-cd05c669ca817a6847663df022a6d77ca6440fae.tar.gz mruby-cd05c669ca817a6847663df022a6d77ca6440fae.zip | |
make_metaclass should skip MRB_TT_ICLASS; close #1369
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; } |
