Project

General

Profile

Backport #2277

Updated by jeremyevans0 (Jeremy Evans) almost 5 years ago

=begin 
  
  This bug brought my server down two times. 
  While my patch for p111 it still exist in p287. 
 
  diff -ru ruby-1.8.6-p111.orig/io.c ruby-1.8.6-p111/io.c 
  --- ruby-1.8.6-p111.orig/io.c 	 Tue May 22 23:28:10 2007 
  +++ ruby-1.8.6-p111/io.c 	 Sun Aug 30 19:08:09 2009 
  @@ -4802,12 +4802,12 @@ 
       if (!pending && n == 0) return Qnil; /* returns nil on timeout */ 
  
       res = rb_ary_new2(3); 
  -      rb_ary_push(res, rp?rb_ary_new():rb_ary_new2(0)); 
  +      rb_ary_push(res, (rp||pending)?rb_ary_new():rb_ary_new2(0)); 
       rb_ary_push(res, wp?rb_ary_new():rb_ary_new2(0)); 
       rb_ary_push(res, ep?rb_ary_new():rb_ary_new2(0)); 
  
       if (interrupt_flag == 0) { 
  - 	 if (rp) { 
  + 	 if (rp || pending) { 
  	     list = RARRAY(res)->ptr[0]; 
  	     for (i=0; i< RARRAY(read)->len; i++) { 
  		 GetOpenFile(rb_io_get_io(RARRAY(read)->ptr[i]), fptr); 
 
 =end 
 

Back