diff options
author | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2014-02-04 01:29:41 +0800 |
---|---|---|
committer | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2014-02-05 20:54:06 +0800 |
commit | e4d1698671dfede8f2ffae8f639d223c1c9c3959 (patch) | |
tree | acf8cad0631d9835aa52ae851d93d8ce4a2160d7 /src/empathy-debug-window.c | |
parent | d646a882bc484bb0b0c839bbecda53fd15ba7af9 (diff) | |
download | gsoc2013-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
Diffstat (limited to 'src/empathy-debug-window.c')
-rw-r--r-- | src/empathy-debug-window.c | 7 |
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); |