gsocket: don't abuse GPollFD.revents field
authorRyan Lortie <desrt@desrt.ca>
Thu, 13 Feb 2014 21:58:34 +0000 (16:58 -0500)
committerRyan Lortie <desrt@desrt.ca>
Sat, 22 Feb 2014 15:24:19 +0000 (10:24 -0500)
We are reusing the GPollFD.revents field of the source to store a
temporary value.  Use a local variable for that instead.

This is a refactor to make the next commit easier to understand.

https://bugzilla.gnome.org/show_bug.cgi?id=724707

gio/gsocket.c

index 79aab0e..c7262d6 100644 (file)
@@ -3259,17 +3259,19 @@ socket_source_dispatch (GSource     *source,
   GSocketSourceFunc func = (GSocketSourceFunc)callback;
   GSocketSource *socket_source = (GSocketSource *)source;
   GSocket *socket = socket_source->socket;
+  guint events;
   gboolean ret;
 
 #ifdef G_OS_WIN32
-  socket_source->pollfd.revents = update_condition (socket_source->socket);
+  events = update_condition (socket_source->socket);
+#else
+  events = socket_source->pollfd.revents;
 #endif
+
   if (socket_source->socket->priv->timed_out)
-    socket_source->pollfd.revents |= socket_source->condition & (G_IO_IN | G_IO_OUT);
+    events |= socket_source->condition & (G_IO_IN | G_IO_OUT);
 
-  ret = (*func) (socket,
-                socket_source->pollfd.revents & socket_source->condition,
-                user_data);
+  ret = (*func) (socket, events & socket_source->condition, user_data);
 
   if (socket->priv->timeout)
     socket_source->timeout_time = g_get_monotonic_time () +