summaryrefslogtreecommitdiff
path: root/libavformat/os_support.c
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2012-06-24 22:36:37 +0300
committerMartin Storsjö <martin@martin.st>2012-06-30 15:17:52 +0300
commit71078ad3338d850a24071e93b69d2109a943f73e (patch)
tree300a2a8e4ea85075a6beb6f5205b62a054b2848e /libavformat/os_support.c
parent5aff37d28d6a140f70f6cae996e6f55b21b1106d (diff)
os_support: Don't compare a negative number against socket descriptors
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ö <martin@martin.st>
Diffstat (limited to 'libavformat/os_support.c')
-rw-r--r--libavformat/os_support.c12
1 files 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)