diff options
author | Jakub Adam <jakub.adam@ktknet.cz> | 2010-08-24 04:45:25 +0000 |
---|---|---|
committer | Jakub Adam <jakub.adam@ktknet.cz> | 2010-08-24 04:45:25 +0000 |
commit | 95830726d2ca1c2eadf7e75108c46a0fdd501a80 (patch) | |
tree | 10ef7a7badd4c4303a76412a100b203fc8dc8e41 | |
parent | 9332bddf680bef62025637ecd700c31523bca7cd (diff) | |
download | pidgin-95830726d2ca1c2eadf7e75108c46a0fdd501a80.tar.gz |
Fix some media code leaks.
Fixes #12349.
committer: Elliott Sales de Andrade <qulogic@pidgin.im>
-rw-r--r-- | COPYRIGHT | 1 | ||||
-rw-r--r-- | libpurple/media.c | 3 | ||||
-rw-r--r-- | libpurple/media/backend-fs2.c | 11 | ||||
-rw-r--r-- | libpurple/media/codec.c | 10 |
4 files changed, 13 insertions, 12 deletions
@@ -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 * |