Bug #15625 » bug-15625.patch
| variable.c | ||
|---|---|---|
| 
         VALUE klass; 
   | 
||
| 
         VALUE path; 
   | 
||
| 
         VALUE track; 
   | 
||
| 
         VALUE checked; 
   | 
||
| 
         struct fc_result *prev; 
   | 
||
| 
     }; 
   | 
||
| ... | ... | |
| 
     	if (!RCLASS_CONST_TBL(value)) return ID_TABLE_CONTINUE; 
   | 
||
| 
     	else { 
   | 
||
| 
     	    struct fc_result arg; 
   | 
||
| 
     	    struct fc_result *list; 
   | 
||
| 
     	    list = res; 
   | 
||
| 
     	    while (list) { 
   | 
||
| 
     		if (list->track == value) return ID_TABLE_CONTINUE; 
   | 
||
| 
     		list = list->prev; 
   | 
||
| 
     	    } 
   | 
||
| 
                 if (rb_hash_lookup2(res->checked, value, Qfalse)) 
   | 
||
| 
                     return ID_TABLE_CONTINUE; 
   | 
||
| 
     	    arg.name = key; 
   | 
||
| 
     	    arg.preferred = res->preferred; 
   | 
||
| 
     	    arg.path = 0; 
   | 
||
| 
     	    arg.klass = res->klass; 
   | 
||
| 
     	    arg.track = value; 
   | 
||
| 
                 arg.checked = res->checked; 
   | 
||
| 
     	    arg.prev = res; 
   | 
||
| 
                 rb_hash_aset(arg.checked, value, Qtrue); 
   | 
||
| 
     	    rb_id_table_foreach(RCLASS_CONST_TBL(value), fc_i, &arg); 
   | 
||
| 
     	    if (arg.path) { 
   | 
||
| 
     		res->path = arg.path; 
   | 
||
| ... | ... | |
| 
         arg.path = 0; 
   | 
||
| 
         arg.klass = klass; 
   | 
||
| 
         arg.track = rb_cObject; 
   | 
||
| 
         arg.checked = rb_ident_hash_new(); 
   | 
||
| 
         arg.prev = 0; 
   | 
||
| 
         if (RCLASS_CONST_TBL(rb_cObject)) { 
   | 
||
| 
             rb_hash_aset(arg.checked, rb_cObject, Qtrue) 
   | 
||
| 
     	rb_id_table_foreach(RCLASS_CONST_TBL(rb_cObject), fc_i, &arg); 
   | 
||
| 
         } 
   | 
||
| 
         if (arg.path) { 
   | 
||
- « Previous
 - 1
 - 2
 - Next »