From 333c847f19a0e9d53ab3021fed7517a5604d2bf4 Mon Sep 17 00:00:00 2001 From: akr Date: Sat, 5 Nov 2011 10:13:00 +0000 Subject: [PATCH] * io.c (rb_cloexec_fcntl_dupfd): don't clear try_dupfd_cloexec if fcntl(F_DUPFD) failed as fcntl(F_DUPFD_CLOEXEC). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33641 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ io.c | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) 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 {