From 71078ad3338d850a24071e93b69d2109a943f73e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Storsj=C3=B6?= Date: Sun, 24 Jun 2012 22:36:37 +0300 Subject: [PATCH] os_support: Don't compare a negative number against socket descriptors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The fds are unsigned integers in the windows definition of struct sockfds. Due to this, the comparison if (fds[i].fd > n) was always false. Signed-off-by: Martin Storsjö --- libavformat/os_support.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/libavformat/os_support.c b/libavformat/os_support.c index 8054ba6bbb..49ec0c60d1 100644 --- a/libavformat/os_support.c +++ b/libavformat/os_support.c @@ -286,7 +286,7 @@ int poll(struct pollfd *fds, nfds_t numfds, int timeout) FD_ZERO(&write_set); FD_ZERO(&exception_set); - n = -1; + n = 0; for(i = 0; i < numfds; i++) { if (fds[i].fd < 0) continue; @@ -301,22 +301,22 @@ int poll(struct pollfd *fds, nfds_t numfds, int timeout) if (fds[i].events & POLLOUT) FD_SET(fds[i].fd, &write_set); if (fds[i].events & POLLERR) FD_SET(fds[i].fd, &exception_set); - if (fds[i].fd > n) - n = fds[i].fd; + if (fds[i].fd >= n) + n = fds[i].fd + 1; }; - if (n == -1) + if (n == 0) /* Hey!? Nothing to poll, in fact!!! */ return 0; if (timeout < 0) - rc = select(n+1, &read_set, &write_set, &exception_set, NULL); + rc = select(n, &read_set, &write_set, &exception_set, NULL); else { struct timeval tv; tv.tv_sec = timeout / 1000; tv.tv_usec = 1000 * (timeout % 1000); - rc = select(n+1, &read_set, &write_set, &exception_set, &tv); + rc = select(n, &read_set, &write_set, &exception_set, &tv); }; if (rc < 0)