diff options
Diffstat (limited to 'struct.c')
-rw-r--r-- | struct.c | 15 |
1 files changed, 8 insertions, 7 deletions
@@ -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); + } } } |