diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | io.c | 2 |
2 files changed, 6 insertions, 2 deletions
@@ -1,4 +1,8 @@ -Wed Nov 9 22:54:30 2011 Nobuyoshi Nakada <nobu@ruby-lang.org> +Wed Nov 9 23:20:22 2011 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * 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. @@ -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; |