diff options
-rw-r--r-- | include/ruby/win32.h | 2 | ||||
-rw-r--r-- | io.c | 2 | ||||
-rw-r--r-- | win32/win32.c | 12 |
3 files changed, 8 insertions, 8 deletions
diff --git a/include/ruby/win32.h b/include/ruby/win32.h index 4d8a66742f..bb6d2017a1 100644 --- a/include/ruby/win32.h +++ b/include/ruby/win32.h @@ -234,7 +234,7 @@ struct msghdr { extern int rb_w32_cmdvector(const char *, char ***); extern rb_pid_t rb_w32_pipe_exec(const char *, const char *, int, int *, int *); extern int flock(int fd, int oper); -extern int rb_w32_has_cancel_io(void); +extern int rb_w32_io_cancelable_p(int); extern int rb_w32_is_socket(int); extern int WSAAPI rb_w32_accept(int, struct sockaddr *, int *); extern int WSAAPI rb_w32_bind(int, const struct sockaddr *, int); @@ -188,7 +188,7 @@ static int max_file_descriptor = NOFILE; #if defined(_WIN32) #define WAIT_FD_IN_WIN32(fptr) \ - (rb_w32_has_cancel_io() ? 0 : rb_thread_wait_fd((fptr)->fd)) + (rb_w32_io_cancelable_p((fptr)->fd) ? 0 : rb_thread_wait_fd((fptr)->fd)) #else #define WAIT_FD_IN_WIN32(fptr) #endif diff --git a/win32/win32.c b/win32/win32.c index 4d3080663b..7ec83d9221 100644 --- a/win32/win32.c +++ b/win32/win32.c @@ -578,12 +578,6 @@ init_env(void) typedef BOOL (WINAPI *cancel_io_t)(HANDLE); static cancel_io_t cancel_io = NULL; -int -rb_w32_has_cancel_io(void) -{ - return cancel_io != NULL; -} - static void init_func(void) { @@ -2080,6 +2074,12 @@ set_pioinfo_extra(void) #define FDEV 0x40 /* file handle refers to device */ #define FTEXT 0x80 /* file handle is in text mode */ +int +rb_w32_io_cancelable_p(int fd) +{ + return cancel_io != NULL && (is_socket(TO_SOCKET(fd)) || !is_console(TO_SOCKET(fd))); +} + static int rb_w32_open_osfhandle(intptr_t osfhandle, int flags) { |