Index: giowin32.c
===================================================================
--- giowin32.c	(revision 2699)
+++ giowin32.c	(revision 2703)
@@ -916,8 +916,14 @@
       if (watch->pollfd.revents == 0 && (channel->last_events & (FD_CLOSE)))
 	watch->pollfd.revents |= G_IO_HUP;
 
-      if (!channel->write_would_have_blocked && (channel->event_mask & FD_WRITE))
-	watch->pollfd.revents |= G_IO_OUT; /* This sucks but... */
+      /* XXX What was the original idea behind this line of code?  What 
+       * was it supposed to accomplish?  As-is, it causes spurious 
+       * write events for watches watching write events whenever the 
+       * event loop handles anything, even if this fd isn't 
+       * connected, yet.
+       */
+      /* if (!channel->write_would_have_blocked && (channel->event_mask & FD_WRITE))
+	watch->pollfd.revents |= G_IO_OUT; */ /* This sucks but... */
 
       return ((watch->pollfd.revents | buffer_condition) & watch->condition);
 
