From a3efca16a12044b46f0e305ddcacfe6d412afcca Mon Sep 17 00:00:00 2001 From: akr Date: Sun, 30 Oct 2011 13:34:04 +0000 Subject: * ruby.c (fill_standard_fds): use fstat() instead of fcntl(F_GETFD) for MinGW. reported by Luis Lavena. [ruby-core:40526] [Bug #5516] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33573 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ ruby.c | 7 ++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 57182b8e50..980e5e8631 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sun Oct 30 22:32:44 2011 Tanaka Akira + + * ruby.c (fill_standard_fds): use fstat() instead of fcntl(F_GETFD) + for MinGW. reported by Luis Lavena. [ruby-core:40526] [Bug #5516] + Sun Oct 30 21:12:47 2011 Tanaka Akira * include/ruby/intern.h (rb_cloexec_pipe): declared. diff --git a/ruby.c b/ruby.c index 3371772671..944f214560 100644 --- a/ruby.c +++ b/ruby.c @@ -1819,9 +1819,10 @@ static void fill_standard_fds(void) { int f0, f1, f2, fds[2]; - f0 = fcntl(0, F_GETFD) == -1 && errno == EBADF; - f1 = fcntl(1, F_GETFD) == -1 && errno == EBADF; - f2 = fcntl(2, F_GETFD) == -1 && errno == EBADF; + struct stat buf; + f0 = fstat(0, &buf) == -1 && errno == EBADF; + f1 = fstat(1, &buf) == -1 && errno == EBADF; + f2 = fstat(2, &buf) == -1 && errno == EBADF; if (f0) { if (pipe(fds) == 0) { close(fds[1]); -- cgit v1.2.3