Project

General

Profile

Feature #10585 » 0002-struct.c-cache-member-definition-in-a-subclass.patch

0002-with-NIL_P - funny_falcon (Yura Sokolov), 12/15/2014 06:28 PM

View differences:

struct.c
static inline VALUE
struct_ivar_get(VALUE c, ID id)
{
for (;;) {
if (rb_ivar_defined(c, id))
return rb_ivar_get(c, id);
c = RCLASS_SUPER(c);
if (c == 0 || c == rb_cStruct)
return Qnil;
VALUE orig = c;
VALUE ivar = rb_attr_get(c, id);
if (!NIL_P(ivar))
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)) {
rb_ivar_set(orig, id, ivar);
return ivar;
}
}
}
(5-5/5)