There might be a GSource attached to a GMainContext, about to be removed by a
pending cancellation. Deleting the handle too early will trigger a g_warning in
the "select()" call in GMainContext. Attached patch fixes this by deferring
destruction of WSAEVENT object until GSocket's finalize().
Patch from bug #612702.
Signed-off-by: Tor Lillqvist <tml@iki.fi>
g_socket_close (socket, NULL);
#ifdef G_OS_WIN32
+ if (socket->priv->event != WSA_INVALID_EVENT)
+ {
+ WSACloseEvent (socket->priv->event);
+ socket->priv->event = WSA_INVALID_EVENT;
+ }
+
g_assert (socket->priv->requested_conditions == NULL);
#endif
break;
}
-#ifdef G_OS_WIN32
- if (socket->priv->event != WSA_INVALID_EVENT)
- {
- WSACloseEvent (socket->priv->event);
- socket->priv->event = WSA_INVALID_EVENT;
- }
-#endif
-
socket->priv->connected = FALSE;
socket->priv->closed = TRUE;