From 9dd0367977c7868380a134ef1b3e9e6d7d3a0bb5 Mon Sep 17 00:00:00 2001 From: Havoc Pennington Date: Fri, 21 Jan 2005 03:47:21 +0000 Subject: 2005-01-20 Havoc Pennington * dbus/dbus-sysdeps.c (_dbus_poll): fix several bugs in the select() version, patches from Tor Lillqvist --- ChangeLog | 5 +++++ dbus/dbus-sysdeps.c | 33 +++++++++++++++++---------------- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2d0dd6ae..bfd5688b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-01-20 Havoc Pennington + + * dbus/dbus-sysdeps.c (_dbus_poll): fix several bugs in the + select() version, patches from Tor Lillqvist + 2005-01-20 Havoc Pennington * doc/dbus-tutorial.xml: replace > with > diff --git a/dbus/dbus-sysdeps.c b/dbus/dbus-sysdeps.c index d951a8d6..96bf3fea 100644 --- a/dbus/dbus-sysdeps.c +++ b/dbus/dbus-sysdeps.c @@ -1840,40 +1840,41 @@ _dbus_poll (DBusPollFD *fds, for (i = 0; i < n_fds; i++) { - DBusPollFD f = fds[i]; + DBusPollFD *fdp = fds[i]; - if (f.events & _DBUS_POLLIN) - FD_SET (f.fd, &read_set); + if (fdp->events & _DBUS_POLLIN) + FD_SET (fdp->fd, &read_set); - if (f.events & _DBUS_POLLOUT) - FD_SET (f.fd, &write_set); + if (fdp->events & _DBUS_POLLOUT) + FD_SET (fdp->fd, &write_set); - FD_SET (f.fd, &err_set); + FD_SET (fdp->fd, &err_set); - max_fd = MAX (max_fd, f.fd); + max_fd = MAX (max_fd, fdp->fd); } tv.tv_sec = timeout_milliseconds / 1000; tv.tv_usec = (timeout_milliseconds % 1000) * 1000; - ready = select (max_fd + 1, &read_set, &write_set, &err_set, &tv); + ready = select (max_fd + 1, &read_set, &write_set, &err_set, + timeout_milliseconds < 0 ? NULL : &tv); if (ready > 0) { for (i = 0; i < n_fds; i++) { - DBusPollFD f = fds[i]; + DBusPollFD *fdp = fds[i]; - f.revents = 0; + fdp->revents = 0; - if (FD_ISSET (f.fd, &read_set)) - f.revents |= _DBUS_POLLIN; + if (FD_ISSET (fdp->fd, &read_set)) + fdp->revents |= _DBUS_POLLIN; - if (FD_ISSET (f.fd, &write_set)) - f.revents |= _DBUS_POLLOUT; + if (FD_ISSET (fdp->fd, &write_set)) + fdp->revents |= _DBUS_POLLOUT; - if (FD_ISSET (f.fd, &err_set)) - f.revents |= _DBUS_POLLERR; + if (FD_ISSET (fdp->fd, &err_set)) + fdp->revents |= _DBUS_POLLERR; } } -- cgit