diff options
author | xclaesse <xclaesse@4ee84921-47dd-4033-b63a-18d7a039a3e4> | 2009-01-10 00:15:37 +0800 |
---|---|---|
committer | xclaesse <xclaesse@4ee84921-47dd-4033-b63a-18d7a039a3e4> | 2009-01-10 00:15:37 +0800 |
commit | a0a07725cad36ce54e899aedbf4c37b109b95f55 (patch) | |
tree | 7bd52cd429ca2662d4f8295433284b30e58d1c28 /libempathy | |
parent | 91c9566419ccc84328e543ebdc839d270abd19fd (diff) | |
download | gsoc2013-empathy-a0a07725cad36ce54e899aedbf4c37b109b95f55.tar gsoc2013-empathy-a0a07725cad36ce54e899aedbf4c37b109b95f55.tar.gz gsoc2013-empathy-a0a07725cad36ce54e899aedbf4c37b109b95f55.tar.bz2 gsoc2013-empathy-a0a07725cad36ce54e899aedbf4c37b109b95f55.tar.lz gsoc2013-empathy-a0a07725cad36ce54e899aedbf4c37b109b95f55.tar.xz gsoc2013-empathy-a0a07725cad36ce54e899aedbf4c37b109b95f55.tar.zst gsoc2013-empathy-a0a07725cad36ce54e899aedbf4c37b109b95f55.zip |
Free ready callbacks in finalize
Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
git-svn-id: svn+ssh://svn.gnome.org/svn/empathy/trunk@2191 4ee84921-47dd-4033-b63a-18d7a039a3e4
Diffstat (limited to 'libempathy')
-rw-r--r-- | libempathy/empathy-contact.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/libempathy/empathy-contact.c b/libempathy/empathy-contact.c index a48d69900..6c521650f 100644 --- a/libempathy/empathy-contact.c +++ b/libempathy/empathy-contact.c @@ -219,6 +219,7 @@ static void contact_finalize (GObject *object) { EmpathyContactPriv *priv; + GList *l; priv = GET_PRIV (object); @@ -228,6 +229,18 @@ contact_finalize (GObject *object) g_free (priv->id); g_free (priv->presence_message); + for (l = priv->ready_callbacks; l != NULL; l = g_list_next (l)) + { + ReadyCbData *d = (ReadyCbData *)l->data; + + if (d->destroy != NULL) + d->destroy (d->user_data); + g_slice_free (ReadyCbData, d); + } + + g_list_free (priv->ready_callbacks); + priv->ready_callbacks = NULL; + if (priv->avatar) empathy_avatar_unref (priv->avatar); @@ -372,8 +385,10 @@ contact_weak_object_notify (gpointer data, GObject *old_object) if (d->destroy != NULL) d->destroy (d->user_data); - priv->ready_callbacks = g_list_delete_link (priv->ready_callbacks, + priv->ready_callbacks = g_list_delete_link (priv->ready_callbacks, l); + + g_slice_free (ReadyCbData, d); } } } @@ -415,6 +430,7 @@ contact_set_ready_flag (EmpathyContact *contact, contact_call_ready_callback (contact, NULL, d); priv->ready_callbacks = g_list_delete_link (priv->ready_callbacks, l); + g_slice_free (ReadyCbData, d); } } } |