Feature #10585 » 0002-struct.c-cache-member-definition-in-a-subclass.patch
| 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; 
   | 
||
| 
             } 
   | 
||
| 
         } 
   | 
||
| 
     } 
   | 
||
- « Previous
 - 1
 - …
 - 3
 - 4
 - 5
 - Next »