diff --git a/struct.c b/struct.c index 44ca389f04..c95c88200b 100644 --- a/struct.c +++ b/struct.c @@ -43,13 +43,14 @@ struct_ivar_get(VALUE c, ID id) return ivar; for (;;) { - c = RCLASS_SUPER(c); - if (c == 0 || c == rb_cStruct) - return Qnil; - ivar = rb_attr_get(c, id); - if (!NIL_P(ivar)) { - return rb_ivar_set(orig, id, ivar); - } + c = rb_class_superclass(c); + if (c == 0 || c == rb_cStruct) + return Qnil; + RUBY_ASSERT(RB_TYPE_P(c, T_CLASS)); + ivar = rb_attr_get(c, id); + if (!NIL_P(ivar)) { + return rb_ivar_set(orig, id, ivar); + } } }