]> git.ipfire.org Git - thirdparty/dbus.git/commitdiff
2005-01-20 Havoc Pennington <hp@redhat.com>
authorHavoc Pennington <hp@redhat.com>
Fri, 21 Jan 2005 03:47:21 +0000 (03:47 +0000)
committerHavoc Pennington <hp@redhat.com>
Fri, 21 Jan 2005 03:47:21 +0000 (03:47 +0000)
* dbus/dbus-sysdeps.c (_dbus_poll): fix several bugs in the
select() version, patches from Tor Lillqvist

ChangeLog
dbus/dbus-sysdeps.c

index 2d0dd6aedc7f049682a5df617e542ce7ffa8d022..bfd5688ba3fcab6cfbd990f60eccec709ac14ab8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2005-01-20  Havoc Pennington  <hp@redhat.com>
+
+       * dbus/dbus-sysdeps.c (_dbus_poll): fix several bugs in the
+       select() version, patches from Tor Lillqvist
+
 2005-01-20  Havoc Pennington  <hp@redhat.com>
 
        * doc/dbus-tutorial.xml: replace > with &gt;
index d951a8d626c33b6f741ca1d15896b6095fa2c79a..96bf3feab2ff564fd72e7b2d6c69d8a862537145 100644 (file)
@@ -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;
        }
     }