AROS: We have to provide the correct nfds to WaitSelect
When copying the poll() compatibility function from win32 to AROS we need to update it to set nfds correctly. While win32 does not care what nfds is set to and works even if nfds is always 0, other platforms, like AROS do care.libnfs-4.0.0-vitalif
parent
0f9fe7c64d
commit
a7954132ce
|
@ -89,7 +89,7 @@ int aros_poll(struct pollfd *fds, unsigned int nfds, int timo)
|
|||
{
|
||||
struct timeval timeout, *toptr;
|
||||
fd_set ifds, ofds, efds, *ip, *op;
|
||||
unsigned int i;
|
||||
unsigned int i, maxfd = 0;
|
||||
int rc;
|
||||
|
||||
// Set up the file-descriptor sets in ifds, ofds and efds.
|
||||
|
@ -110,6 +110,9 @@ int aros_poll(struct pollfd *fds, unsigned int nfds, int timo)
|
|||
FD_SET(fds[i].fd, op);
|
||||
}
|
||||
FD_SET(fds[i].fd, &efds);
|
||||
if (fds[i].fd > maxfd) {
|
||||
maxfd = fds[i].fd;
|
||||
}
|
||||
}
|
||||
|
||||
// Set up the timeval structure for the timeout parameter
|
||||
|
@ -124,7 +127,7 @@ int aros_poll(struct pollfd *fds, unsigned int nfds, int timo)
|
|||
timeout.tv_usec = (timo - timeout.tv_sec * 1000) * 1000;
|
||||
}
|
||||
|
||||
rc = WaitSelect(0, ip, op, &efds, toptr, NULL);
|
||||
rc = WaitSelect(maxfd + 1, ip, op, &efds, toptr, NULL);
|
||||
|
||||
if(rc <= 0)
|
||||
return rc;
|
||||
|
|
Loading…
Reference in New Issue