aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorxclaesse <xclaesse@4ee84921-47dd-4033-b63a-18d7a039a3e4>2008-05-09 16:06:19 +0800
committerxclaesse <xclaesse@4ee84921-47dd-4033-b63a-18d7a039a3e4>2008-05-09 16:06:19 +0800
commit4e805529866da2f0e7b6c900b54e2ec886441d80 (patch)
tree2bc6521429f3f4ee590c99e210df652b3722a6d9
parentac4d55252d66d4cb1b86aa6866a82981e47c0d9f (diff)
downloadgsoc2013-empathy-4e805529866da2f0e7b6c900b54e2ec886441d80.tar
gsoc2013-empathy-4e805529866da2f0e7b6c900b54e2ec886441d80.tar.gz
gsoc2013-empathy-4e805529866da2f0e7b6c900b54e2ec886441d80.tar.bz2
gsoc2013-empathy-4e805529866da2f0e7b6c900b54e2ec886441d80.tar.lz
gsoc2013-empathy-4e805529866da2f0e7b6c900b54e2ec886441d80.tar.xz
gsoc2013-empathy-4e805529866da2f0e7b6c900b54e2ec886441d80.tar.zst
gsoc2013-empathy-4e805529866da2f0e7b6c900b54e2ec886441d80.zip
Don't leak queued messages if EmpathyTpChat gets finalized.
git-svn-id: svn+ssh://svn.gnome.org/svn/empathy/trunk@1096 4ee84921-47dd-4033-b63a-18d7a039a3e4
-rw-r--r--libempathy/empathy-tp-chat.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/libempathy/empathy-tp-chat.c b/libempathy/empathy-tp-chat.c
index f0d7820a9..286896bbe 100644
--- a/libempathy/empathy-tp-chat.c
+++ b/libempathy/empathy-tp-chat.c
@@ -834,6 +834,8 @@ tp_chat_finalize (GObject *object)
EmpathyTpChatPriv *priv = GET_PRIV (object);
guint i;
+ DEBUG ("Finalize: %p", object);
+
if (priv->acknowledge && priv->channel) {
DEBUG ("Closing channel...");
tp_cli_channel_call_close (priv->channel, -1,
@@ -875,6 +877,19 @@ tp_chat_finalize (GObject *object)
g_object_unref (priv->account);
g_free (priv->id);
+ if (priv->message_queue) {
+ EmpathyMessage *message;
+ EmpathyContact *contact;
+
+ message = priv->message_queue->data;
+ contact = empathy_message_get_sender (message);
+ g_signal_handlers_disconnect_by_func (contact,
+ tp_chat_sender_ready_notify_cb,
+ object);
+ }
+ g_slist_foreach (priv->message_queue, (GFunc) g_object_unref, NULL);
+ g_slist_free (priv->message_queue);
+
G_OBJECT_CLASS (empathy_tp_chat_parent_class)->finalize (object);
}