Browse Source

cli: don't cast away const in select() timeout argument

The timeout argument to select() is modified to reflect the time
remaining when the function returns on a non-timeout condition.
Passing a pointer to const data and casting away the const-ness is
asking for trouble, but for some reason, this trouble manifests
itself only on non-x86 architectures [whose implementation of select()
in glibc is different from the one supplied for x86]

Fix this by passing a stack copy of the timeout argument to select()
pull/540/head
Ard Biesheuvel 13 years ago
parent
commit
f33265d572
  1. 4
      sapi/cli/php_cli_server.c

4
sapi/cli/php_cli_server.c

@ -893,9 +893,11 @@ static void php_cli_server_poller_remove(php_cli_server_poller *poller, int mode
static int php_cli_server_poller_poll(php_cli_server_poller *poller, const struct timeval *tv) /* {{{ */
{
struct timeval t = *tv;
memmove(&poller->active.rfds, &poller->rfds, sizeof(poller->rfds));
memmove(&poller->active.wfds, &poller->wfds, sizeof(poller->wfds));
return php_select(poller->max_fd + 1, &poller->active.rfds, &poller->active.wfds, NULL, (struct timeval *)tv);
return php_select(poller->max_fd + 1, &poller->active.rfds, &poller->active.wfds, NULL, &t);
} /* }}} */
static int php_cli_server_poller_iter_on_active(php_cli_server_poller *poller, void *opaque, int(*callback)(void *, int fd, int events)) /* {{{ */

Loading…
Cancel
Save