summaryrefslogtreecommitdiff
path: root/thread.c
diff options
context:
space:
mode:
Diffstat (limited to 'thread.c')
-rw-r--r--thread.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/thread.c b/thread.c
index e9dc5386b4..d206e58afc 100644
--- a/thread.c
+++ b/thread.c
@@ -1716,9 +1716,6 @@ do_select(int n, fd_set *read, fd_set *write, fd_set *except,
#endif
goto retry;
}
- else {
- rb_bug("fatal error on select() - errno: %d\n", lerrno);
- }
}
return result;
}
@@ -1740,6 +1737,10 @@ rb_thread_wait_fd_rw(int fd, int read)
else {
result = do_select(fd + 1, 0, rb_fd_ptr(&set), 0, 0);
}
+
+ if (result < 0 && errno != EBADF) {
+ rb_sys_fail(0);
+ }
}
thread_debug("rb_thread_wait_fd_rw(%d, %s): done\n", fd, read ? "read" : "write");
@@ -1773,7 +1774,7 @@ rb_thread_select(int max, fd_set * read, fd_set * write, fd_set * except,
else {
return do_select(max, read, write, except, timeout);
}
- }
+}
/*