* process.c (redirect_dup2): when the new FD of dup2() coflicts

with one of the timer thread FDs, the internal FD is diverted.
  [Bug #11336] [ruby-core:69886] [Bug #11350] [ruby-core:69961]
    
* process.c (dup2_with_divert): new function for the above purpose.
   
* thread_pthread.c (rb_divert_reserved_fd): new function for
  diverting reserved FD. If the given FD is the same as one of the
  reserved FDs, the reserved FD number is internally changed.
  It returns -1 when error. Otherwise, returns 0. It also returns
  0 if there is no need to change reserved FD number.

* thread_win32.c (rb_divert_reserved_fd): always returns 0 because
  of no reserved FDs.

* internal.h (rb_divert_reserved_fd): prototype declaration.
  It is Ruby internal use only.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51268 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
ngoto 2015-07-16 13:06:13 +00:00
parent 7b08338ab1
commit f242e17f9b
5 changed files with 62 additions and 2 deletions

View file

@ -788,6 +788,12 @@ rb_reserved_fd_p(int fd)
return 0;
}
int
rb_divert_reserved_fd(int fd)
{
return 0;
}
rb_nativethread_id_t
rb_nativethread_self(void)
{