summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Adam <jakub.adam@ktknet.cz>2010-08-24 04:45:25 +0000
committerJakub Adam <jakub.adam@ktknet.cz>2010-08-24 04:45:25 +0000
commit95830726d2ca1c2eadf7e75108c46a0fdd501a80 (patch)
tree10ef7a7badd4c4303a76412a100b203fc8dc8e41
parent9332bddf680bef62025637ecd700c31523bca7cd (diff)
downloadpidgin-95830726d2ca1c2eadf7e75108c46a0fdd501a80.tar.gz
Fix some media code leaks.
Fixes #12349. committer: Elliott Sales de Andrade <qulogic@pidgin.im>
-rw-r--r--COPYRIGHT1
-rw-r--r--libpurple/media.c3
-rw-r--r--libpurple/media/backend-fs2.c11
-rw-r--r--libpurple/media/codec.c10
4 files changed, 13 insertions, 12 deletions
diff --git a/COPYRIGHT b/COPYRIGHT
index 269c37d94c..c7593a6223 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -18,6 +18,7 @@ control system to see from where it came and who has modified it.
Copyright (C) 1998-2009 by the following:
Saleem Abdulrasool
+Jakub Adam
Dave Ahlswede
Manuel Amador
Matt Amato
diff --git a/libpurple/media.c b/libpurple/media.c
index 0bf35ca310..8234a89982 100644
--- a/libpurple/media.c
+++ b/libpurple/media.c
@@ -515,7 +515,8 @@ purple_media_add_session(PurpleMedia *media, PurpleMediaSession *session)
if (!media->priv->sessions) {
purple_debug_info("media", "Creating hash table for sessions\n");
- media->priv->sessions = g_hash_table_new(g_str_hash, g_str_equal);
+ media->priv->sessions = g_hash_table_new_full(g_str_hash, g_str_equal,
+ g_free, NULL);
}
g_hash_table_insert(media->priv->sessions, g_strdup(session->id), session);
}
diff --git a/libpurple/media/backend-fs2.c b/libpurple/media/backend-fs2.c
index 99da752ea0..1cc4257594 100644
--- a/libpurple/media/backend-fs2.c
+++ b/libpurple/media/backend-fs2.c
@@ -208,11 +208,7 @@ purple_media_backend_fs2_dispose(GObject *obj)
}
if (priv->participants) {
- GList *participants =
- g_hash_table_get_values(priv->participants);
- for (; participants; participants = g_list_delete_link(
- participants, participants))
- g_object_unref(participants->data);
+ g_hash_table_destroy(priv->participants);
priv->participants = NULL;
}
@@ -1425,7 +1421,8 @@ create_session(PurpleMediaBackendFs2 *self, const gchar *sess_id,
if (!priv->sessions) {
purple_debug_info("backend-fs2",
"Creating hash table for sessions\n");
- priv->sessions = g_hash_table_new(g_str_hash, g_str_equal);
+ priv->sessions = g_hash_table_new_full(g_str_hash, g_str_equal,
+ g_free, NULL);
}
g_hash_table_insert(priv->sessions, g_strdup(session->id), session);
@@ -1461,7 +1458,7 @@ create_participant(PurpleMediaBackendFs2 *self, const gchar *name)
purple_debug_info("backend-fs2",
"Creating hash table for participants\n");
priv->participants = g_hash_table_new_full(g_str_hash,
- g_str_equal, g_free, NULL);
+ g_str_equal, g_free, g_object_unref);
}
g_hash_table_insert(priv->participants, g_strdup(name), participant);
diff --git a/libpurple/media/codec.c b/libpurple/media/codec.c
index 532f11d3dd..9eb68eca62 100644
--- a/libpurple/media/codec.c
+++ b/libpurple/media/codec.c
@@ -83,9 +83,11 @@ purple_media_codec_finalize(GObject *info)
PURPLE_MEDIA_CODEC_GET_PRIVATE(info);
g_free(priv->encoding_name);
for (; priv->optional_params; priv->optional_params =
- g_list_delete_link(priv->optional_params,
- priv->optional_params)) {
- g_free(priv->optional_params->data);
+ g_list_delete_link(priv->optional_params, priv->optional_params)) {
+ PurpleKeyValuePair *param = priv->optional_params->data;
+ g_free(param->key);
+ g_free(param->value);
+ g_free(param);
}
}
@@ -302,10 +304,10 @@ purple_media_codec_remove_optional_parameter(PurpleMediaCodec *codec,
g_free(param->key);
g_free(param->value);
- g_free(param);
priv->optional_params =
g_list_remove(priv->optional_params, param);
+ g_free(param);
}
PurpleKeyValuePair *