[Telepathy-commits] [telepathy-salut/master] src/salut-tubes-manager.c: Fix reference counting on SalutContact
Alban Crequy
alban.crequy at collabora.co.uk
Thu Feb 26 11:20:11 PST 2009
---
src/salut-tubes-manager.c | 20 ++++++++++++++++++--
1 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/src/salut-tubes-manager.c b/src/salut-tubes-manager.c
index 3aef730..0e20acc 100644
--- a/src/salut-tubes-manager.c
+++ b/src/salut-tubes-manager.c
@@ -700,6 +700,7 @@ new_tubes_channel (SalutTubesManager *fac,
"initiator-handle", initiator,
"xmpp-connection-manager", priv->xmpp_connection_manager,
NULL);
+ g_object_unref (contact);
DEBUG ("object path %s", object_path);
@@ -1145,6 +1146,7 @@ salut_private_tubes_factory_get_contact_caps (
GHashTable *dbus_tube_caps;
GHashTableIter tube_caps_iter;
gchar *service;
+ SalutContact *contact = NULL;
GHashTable *per_channel_manager_caps;
g_assert (handle != 0);
@@ -1157,12 +1159,16 @@ salut_private_tubes_factory_get_contact_caps (
}
else
{
- SalutContact *contact = salut_contact_manager_get_contact (
+ contact = salut_contact_manager_get_contact (
priv->contact_manager, handle);
if (contact == NULL)
return;
+ DEBUG ("contact %p ref_count == %d",
+ contact,
+ ((GObject *)contact)->ref_count);
+
per_channel_manager_caps = contact->per_channel_manager_caps;
}
@@ -1195,6 +1201,12 @@ salut_private_tubes_factory_get_contact_caps (
add_service_to_array (service, arr, TP_TUBE_TYPE_DBUS, handle);
}
}
+
+ DEBUG ("contact %p ref_count == %d",
+ contact,
+ ((GObject *)contact)->ref_count);
+ if (contact != NULL)
+ g_object_unref (contact);
}
static void
@@ -1425,6 +1437,7 @@ salut_private_tubes_factory_add_cap (SalutCapsChannelManager *manager,
GHashTable **per_channel_manager_caps;
TubesCapabilities *caps;
const gchar *channel_type;
+ SalutContact *contact = NULL;
channel_type = tp_asv_get_string (cap,
TP_IFACE_CHANNEL ".ChannelType");
@@ -1447,7 +1460,7 @@ salut_private_tubes_factory_add_cap (SalutCapsChannelManager *manager,
}
else
{
- SalutContact *contact = salut_contact_manager_get_contact (
+ contact = salut_contact_manager_get_contact (
priv->contact_manager, handle);
if (contact == NULL)
@@ -1490,6 +1503,9 @@ salut_private_tubes_factory_add_cap (SalutCapsChannelManager *manager,
service);
g_hash_table_insert (caps->dbus_tube_caps, service, feat);
}
+
+ if (contact != NULL)
+ g_object_unref (contact);
}
--
1.5.6.5
More information about the telepathy-commits
mailing list