[Telepathy-commits] [telepathy-salut/master] Capabilities: Fix a leak
Alban Crequy
alban.crequy at collabora.co.uk
Thu Feb 26 11:20:13 PST 2009
---
src/salut-capabilities.h | 2 +-
src/salut-presence-cache.c | 2 ++
src/salut-tubes-manager.c | 26 ++++++++++++++++++++------
3 files changed, 23 insertions(+), 7 deletions(-)
diff --git a/src/salut-capabilities.h b/src/salut-capabilities.h
index e35e726..5f2d984 100644
--- a/src/salut-capabilities.h
+++ b/src/salut-capabilities.h
@@ -31,7 +31,7 @@ struct _Feature
FEATURE_FIXED,
FEATURE_OPTIONAL,
} feature_type;
- const gchar *ns;
+ gchar *ns;
};
/*
diff --git a/src/salut-presence-cache.c b/src/salut-presence-cache.c
index 4ab5345..dda3401 100644
--- a/src/salut-presence-cache.c
+++ b/src/salut-presence-cache.c
@@ -176,6 +176,8 @@ capability_info_get (SalutPresenceCache *cache, const gchar *uri)
static void
capability_info_free (CapabilityInfo *info)
{
+ salut_presence_cache_free_cache_entry (info->per_channel_manager_caps);
+ info->per_channel_manager_caps = NULL;
g_slice_free (CapabilityInfo, info);
}
diff --git a/src/salut-tubes-manager.c b/src/salut-tubes-manager.c
index 715ca8c..f5bf8d6 100644
--- a/src/salut-tubes-manager.c
+++ b/src/salut-tubes-manager.c
@@ -130,6 +130,20 @@ const Feature tube_feature = {
};
static void
+salut_private_tubes_factory_free_feat (gpointer data)
+{
+ Feature *feat = (Feature *)data;
+
+ if (feat == NULL)
+ return;
+
+ if (feat->ns != NULL)
+ g_free (feat->ns);
+
+ g_free (feat);
+}
+
+static void
salut_tubes_manager_init (SalutTubesManager *self)
{
SalutTubesManagerPrivate *priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
@@ -1276,9 +1290,9 @@ salut_private_tubes_factory_parse_caps (
caps = g_new0 (TubesCapabilities, 1);
caps->stream_tube_caps = g_hash_table_new_full (g_str_hash, g_str_equal,
- g_free, g_free);
+ g_free, salut_private_tubes_factory_free_feat);
caps->dbus_tube_caps = g_hash_table_new_full (g_str_hash, g_str_equal,
- g_free, g_free);
+ g_free, salut_private_tubes_factory_free_feat);
gibber_xmpp_node_each_child (node, _parse_caps_item, caps);
@@ -1315,12 +1329,12 @@ salut_private_tubes_factory_copy_caps (
TubesCapabilities *caps_out = g_new0 (TubesCapabilities, 1);
caps_out->stream_tube_caps = g_hash_table_new_full (g_str_hash, g_str_equal,
- g_free, g_free);
+ g_free, salut_private_tubes_factory_free_feat);
g_hash_table_foreach (caps_in->stream_tube_caps, copy_caps_helper,
caps_out->stream_tube_caps);
caps_out->dbus_tube_caps = g_hash_table_new_full (g_str_hash, g_str_equal,
- g_free, g_free);
+ g_free, salut_private_tubes_factory_free_feat);
g_hash_table_foreach (caps_in->dbus_tube_caps, copy_caps_helper,
caps_out->dbus_tube_caps);
@@ -1469,9 +1483,9 @@ salut_private_tubes_factory_add_cap (SalutCapsChannelManager *manager,
{
caps = g_new0 (TubesCapabilities, 1);
caps->stream_tube_caps = g_hash_table_new_full (g_str_hash, g_str_equal,
- g_free, g_free);
+ g_free, salut_private_tubes_factory_free_feat);
caps->dbus_tube_caps = g_hash_table_new_full (g_str_hash, g_str_equal,
- g_free, g_free);
+ g_free, salut_private_tubes_factory_free_feat);
g_hash_table_insert (*per_channel_manager_caps, manager, caps);
}
--
1.5.6.5
More information about the telepathy-commits
mailing list