[Telepathy-commits] [telepathy-salut/master] Fix salut_private_tubes_factory_add_cap

Alban Crequy alban.crequy at collabora.co.uk
Thu Feb 26 11:20:08 PST 2009


---
 src/salut-tubes-manager.c |   16 +++++++++-------
 1 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/src/salut-tubes-manager.c b/src/salut-tubes-manager.c
index 3de463f..cb27689 100644
--- a/src/salut-tubes-manager.c
+++ b/src/salut-tubes-manager.c
@@ -1412,7 +1412,9 @@ salut_private_tubes_factory_add_cap (SalutCapsChannelManager *manager,
   SalutTubesManager *self = SALUT_TUBES_MANAGER (manager);
   SalutTubesManagerPrivate *priv = SALUT_TUBES_MANAGER_GET_PRIVATE (self);
   TpBaseConnection *base = (TpBaseConnection *) conn;
-  GHashTable *per_channel_manager_caps;
+  /* if the GHashTable is not allocated, we want to do it and update the
+   * pointer in SalutSelf or SalutContact. Hence the type "GHashTable **" */
+  GHashTable **per_channel_manager_caps;
   TubesCapabilities *caps;
   const gchar *channel_type;
 
@@ -1433,7 +1435,7 @@ salut_private_tubes_factory_add_cap (SalutCapsChannelManager *manager,
     {
       SalutSelf *salut_self;
       g_object_get (conn, "self", &salut_self, NULL);
-      per_channel_manager_caps = salut_self->per_channel_manager_caps;
+      per_channel_manager_caps = &salut_self->per_channel_manager_caps;
     }
   else
     {
@@ -1443,13 +1445,13 @@ salut_private_tubes_factory_add_cap (SalutCapsChannelManager *manager,
       if (contact == NULL)
         return;
 
-      per_channel_manager_caps = contact->per_channel_manager_caps;
+      per_channel_manager_caps = &contact->per_channel_manager_caps;
     }
 
-  if (per_channel_manager_caps == NULL)
-    per_channel_manager_caps = g_hash_table_new (NULL, NULL);
+  if (*per_channel_manager_caps == NULL)
+    *per_channel_manager_caps = g_hash_table_new (NULL, NULL);
 
-  caps = g_hash_table_lookup (per_channel_manager_caps, manager);
+  caps = g_hash_table_lookup (*per_channel_manager_caps, manager);
   if (caps == NULL)
     {
       caps = g_new0 (TubesCapabilities, 1);
@@ -1457,7 +1459,7 @@ salut_private_tubes_factory_add_cap (SalutCapsChannelManager *manager,
           g_free, g_free);
       caps->dbus_tube_caps = g_hash_table_new_full (g_str_hash, g_str_equal,
           g_free, g_free);
-      g_hash_table_insert (per_channel_manager_caps, manager, caps);
+      g_hash_table_insert (*per_channel_manager_caps, manager, caps);
     }
 
   if (!tp_strdiff (channel_type, SALUT_IFACE_CHANNEL_TYPE_STREAM_TUBE))
-- 
1.5.6.5




More information about the telepathy-commits mailing list