aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2014-02-04 01:29:41 +0800
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2014-02-05 20:54:06 +0800
commite4d1698671dfede8f2ffae8f639d223c1c9c3959 (patch)
treeacf8cad0631d9835aa52ae851d93d8ce4a2160d7
parentd646a882bc484bb0b0c839bbecda53fd15ba7af9 (diff)
downloadgsoc2013-empathy-e4d1698671dfede8f2ffae8f639d223c1c9c3959.tar
gsoc2013-empathy-e4d1698671dfede8f2ffae8f639d223c1c9c3959.tar.gz
gsoc2013-empathy-e4d1698671dfede8f2ffae8f639d223c1c9c3959.tar.bz2
gsoc2013-empathy-e4d1698671dfede8f2ffae8f639d223c1c9c3959.tar.lz
gsoc2013-empathy-e4d1698671dfede8f2ffae8f639d223c1c9c3959.tar.xz
gsoc2013-empathy-e4d1698671dfede8f2ffae8f639d223c1c9c3959.tar.zst
gsoc2013-empathy-e4d1698671dfede8f2ffae8f639d223c1c9c3959.zip
debug-window: fix leak on all TpDebugClient
The store keeps its own ref and the client is reffed while the async call so we can unref it right away. https://bugzilla.gnome.org/show_bug.cgi?id=692793
-rw-r--r--src/empathy-debug-window.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/empathy-debug-window.c b/src/empathy-debug-window.c
index 0fbf9f6d0..39d9f3eec 100644
--- a/src/empathy-debug-window.c
+++ b/src/empathy-debug-window.c
@@ -392,9 +392,6 @@ debug_window_get_messages_cb (GObject *object,
* selected service is unable to fetch debug messages */
if (!tp_strdiff (active_service_name, proxy_service_name))
debug_window_set_toolbar_sensitivity (self, FALSE);
-
- /* We created the proxy for GetMessages call. Now destroy it. */
- tp_clear_object (&debug);
return;
}
@@ -415,6 +412,8 @@ debug_window_get_messages_cb (GObject *object,
DEBUG ("Proxy for service: %s was successful in fetching debug"
" messages. Saving it.", proxy_service_name);
+ /* The store will take its own ref on the proxy preventing it to be
+ * destroyed when leaving this callback. */
gtk_list_store_set (self->priv->service_store, &iter,
COL_PROXY, debug,
-1);
@@ -499,6 +498,8 @@ create_proxy_to_get_messages (EmpathyDebugWindow *self,
tp_debug_client_get_messages_async (TP_DEBUG_CLIENT (new_proxy),
debug_window_get_messages_cb, self);
+ g_object_unref (new_proxy);
+
finally:
g_free (name);
tp_clear_object (&stored_proxy);