diff --git a/ChangeLog b/ChangeLog index 126ca60ad9..33f6263a21 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,8 @@ -Wed Nov 9 22:54:30 2011 Nobuyoshi Nakada +Wed Nov 9 23:20:22 2011 Nobuyoshi Nakada + + * io.c (rb_update_max_fd): fstat(2) can fail with other than + EBADF. [ruby-dev:44837] [Backport #4339]. Cf. + http://pubs.opengroup.org/onlinepubs/9699919799/functions/fstat.html * io.c (rb_sysopen): max fd is updated in rb_sysopen_internal() already. diff --git a/io.c b/io.c index 0ffeb85942..bc661ce6d2 100644 --- a/io.c +++ b/io.c @@ -151,7 +151,7 @@ void rb_update_max_fd(int fd) { struct stat buf; - if (fstat(fd, &buf) != 0) { + if (fstat(fd, &buf) != 0 && errno == EBADF) { rb_bug("rb_update_max_fd: invalid fd (%d) given.", fd); } if (max_file_descriptor < fd) max_file_descriptor = fd;