[Telepathy-commits] [telepathy-gabble/master] GabbleMediaFactory: fix a double free in _dispose

Alban Crequy alban.crequy at collabora.co.uk
Thu Nov 27 10:57:07 PST 2008


---
 src/media-factory.c |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/media-factory.c b/src/media-factory.c
index d3da347..26b5c35 100644
--- a/src/media-factory.c
+++ b/src/media-factory.c
@@ -122,11 +122,15 @@ gabble_media_factory_dispose (GObject *object)
   gabble_media_factory_close_all (fac);
   g_assert (priv->channels == NULL);
 
+  /* Use a temporary variable because we don't want
+   * media_channel_closed_cb to remove the channel from the hash table a
+   * second time */
   if (priv->session_chans)
     {
-      g_assert (g_hash_table_size (priv->session_chans) == 0);
-      g_hash_table_destroy (priv->session_chans);
+      GHashTable *tmp = priv->session_chans;
       priv->session_chans = NULL;
+      g_assert (g_hash_table_size (tmp) == 0);
+      g_hash_table_destroy (tmp);
     }
 
   g_free (priv->stun_server);
-- 
1.5.6.5




More information about the Telepathy-commits mailing list