diff options
author | Martin Storsjö <martin@martin.st> | 2012-06-24 23:36:37 +0400 |
---|---|---|
committer | Martin Storsjö <martin@martin.st> | 2012-06-30 16:17:52 +0400 |
commit | 71078ad3338d850a24071e93b69d2109a943f73e (patch) | |
tree | 300a2a8e4ea85075a6beb6f5205b62a054b2848e /libavformat/os_support.c | |
parent | 5aff37d28d6a140f70f6cae996e6f55b21b1106d (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.c | 12 |
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) |