diff --git a/lib/select.c b/lib/select.c index ee0437342..3069a0c00 100644 --- a/lib/select.c +++ b/lib/select.c @@ -98,7 +98,7 @@ int Curl_select(curl_socket_t readfd, curl_socket_t writefd, int timeout_ms) fd_set fds_read; fd_set fds_write; fd_set fds_err; - int maxfd; + curl_socket_t maxfd; int r; int ret; @@ -176,7 +176,7 @@ int Curl_poll(struct pollfd ufds[], unsigned int nfds, int timeout_ms) fd_set fds_read; fd_set fds_write; fd_set fds_err; - int maxfd; + curl_socket_t maxfd; int r; unsigned int i; @@ -186,12 +186,14 @@ int Curl_poll(struct pollfd ufds[], unsigned int nfds, int timeout_ms) maxfd = -1; for (i = 0; i < nfds; i++) { - if (ufds[i].fd < 0) + if (ufds[i].fd == CURL_SOCKET_BAD) continue; +#ifndef WIN32 /* This is harmless and wrong on Win32 */ if (ufds[i].fd >= FD_SETSIZE) { errno = EINVAL; return -1; } +#endif if (ufds[i].fd > maxfd) maxfd = ufds[i].fd; if (ufds[i].events & POLLIN) @@ -220,7 +222,7 @@ int Curl_poll(struct pollfd ufds[], unsigned int nfds, int timeout_ms) r = 0; for (i = 0; i < nfds; i++) { ufds[i].revents = 0; - if (ufds[i].fd < 0) + if (ufds[i].fd == CURL_SOCKET_BAD) continue; if (FD_ISSET(ufds[i].fd, &fds_read)) ufds[i].revents |= POLLIN; diff --git a/lib/select.h b/lib/select.h index b3d9ce3ae..c3cb22057 100644 --- a/lib/select.h +++ b/lib/select.h @@ -36,7 +36,7 @@ struct pollfd { - int fd; + curl_socket_t fd; short events; short revents; };