Bug #5752 ยป array.c.patch
| array.c | ||
|---|---|---|
| 
     static VALUE 
   | 
||
| 
     rb_ary_reject_bang(VALUE ary) 
   | 
||
| 
     { 
   | 
||
| 
         VALUE rejected_ary, result; 
   | 
||
| 
         int state = 0; 
   | 
||
| 
         RETURN_ENUMERATOR(ary, 0, 0); 
   | 
||
| 
         return ary_reject_bang(ary); 
   | 
||
| 
         rejected_ary = rb_ary_dup(ary); 
   | 
||
| 
         result = rb_protect(ary_reject_bang, rejected_ary, &state); 
   | 
||
| 
         rb_ary_replace(ary, rejected_ary); 
   | 
||
| 
         if (state) rb_jump_tag(state); 
   | 
||
| 
         return RTEST(result) ? ary : Qnil; 
   | 
||
| 
     } 
   | 
||
| 
     /* 
   | 
||
| ... | ... | |
| 
     rb_ary_delete_if(VALUE ary) 
   | 
||
| 
     { 
   | 
||
| 
         RETURN_ENUMERATOR(ary, 0, 0); 
   | 
||
| 
         ary_reject_bang(ary); 
   | 
||
| 
         rb_ary_reject_bang(ary); 
   | 
||
| 
         return ary; 
   | 
||
| 
     } 
   | 
||