[Telepathy-commits] [telepathy-salut/master] GibberListener: clean listeners in error case of listen_tcp_af()
Alban Crequy
alban.crequy at collabora.co.uk
Thu Nov 6 10:12:17 PST 2008
---
lib/gibber/gibber-listener.c | 17 ++++++++++++-----
1 files changed, 12 insertions(+), 5 deletions(-)
diff --git a/lib/gibber/gibber-listener.c b/lib/gibber/gibber-listener.c
index 4f79cbf..09ea07e 100644
--- a/lib/gibber/gibber-listener.c
+++ b/lib/gibber/gibber-listener.c
@@ -94,12 +94,9 @@ gibber_listener_init (GibberListener *self)
}
static void
-gibber_listener_dispose (GObject *object)
+gibber_listeners_clean_listeners (GibberListener *self)
{
- GibberListener *self =
- GIBBER_LISTENER (object);
- GibberListenerPrivate *priv =
- GIBBER_LISTENER_GET_PRIVATE (self);
+ GibberListenerPrivate *priv = GIBBER_LISTENER_GET_PRIVATE (self);
GSList *t;
for (t = priv->listeners ; t != NULL ; t = g_slist_delete_link (t, t))
@@ -112,6 +109,15 @@ gibber_listener_dispose (GObject *object)
}
priv->listeners = NULL;
+}
+
+static void
+gibber_listener_dispose (GObject *object)
+{
+ GibberListener *self =
+ GIBBER_LISTENER (object);
+
+ gibber_listeners_clean_listeners (self);
G_OBJECT_CLASS (gibber_listener_parent_class)->dispose (
object);
@@ -396,6 +402,7 @@ listen_tcp_af (GibberListener *listener, int port, GibberAddressFamily family,
return TRUE;
error:
+ gibber_listeners_clean_listeners (listener);
if (ans != NULL)
freeaddrinfo (ans);
--
1.5.6.5
More information about the Telepathy-commits
mailing list