diff --git a/ChangeLog b/ChangeLog index a498778a7e..68eb368720 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sat Nov 5 19:11:50 2011 Tanaka Akira + + * io.c (rb_cloexec_fcntl_dupfd): don't clear try_dupfd_cloexec if + fcntl(F_DUPFD) failed as fcntl(F_DUPFD_CLOEXEC). + Sat Nov 5 18:05:12 2011 Tanaka Akira * ext/socket/socket.c (rsock_socketpair0): refactored. diff --git a/io.c b/io.c index 7a0bf4935c..8dabdbcc9a 100644 --- a/io.c +++ b/io.c @@ -297,8 +297,10 @@ rb_cloexec_fcntl_dupfd(int fd, int minfd) } /* F_DUPFD_CLOEXEC is available since Linux 2.6.24. Linux 2.6.18 fails with EINVAL */ if (errno == EINVAL) { - try_dupfd_cloexec = 0; ret = fcntl(fd, F_DUPFD, minfd); + if (ret != -1) { + try_dupfd_cloexec = 0; + } } } else {