summaryrefslogtreecommitdiff
path: root/object.c
diff options
context:
space:
mode:
Diffstat (limited to 'object.c')
-rw-r--r--object.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/object.c b/object.c
index f5f5759d11..b9b6f928aa 100644
--- a/object.c
+++ b/object.c
@@ -2259,23 +2259,22 @@ rb_class_superclass(VALUE klass)
{
RUBY_ASSERT(RB_TYPE_P(klass, T_CLASS));
- VALUE super = RCLASS_SUPER(klass);
- VALUE *superclasses;
- size_t superclasses_depth;
+ VALUE *superclasses = RCLASS_SUPERCLASSES(klass);
+ size_t superclasses_depth = RCLASS_SUPERCLASS_DEPTH(klass);
- if (!super) {
- if (klass == rb_cBasicObject) return Qnil;
+ if (klass == rb_cBasicObject) return Qnil;
+
+ if (!superclasses) {
+ RUBY_ASSERT(!RCLASS_SUPER(klass));
rb_raise(rb_eTypeError, "uninitialized class");
}
- superclasses_depth = RCLASS_SUPERCLASS_DEPTH(klass);
if (!superclasses_depth) {
return Qnil;
}
else {
- superclasses = RCLASS_SUPERCLASSES(klass);
- super = superclasses[superclasses_depth - 1];
- RUBY_ASSERT(RB_TYPE_P(klass, T_CLASS));
+ VALUE super = superclasses[superclasses_depth - 1];
+ RUBY_ASSERT(RB_TYPE_P(super, T_CLASS));
return super;
}
}