[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