[evolution] Fix few more memory leaks



commit 84025c02ebe79b8477be528e37d48546b5370651
Author: Milan Crha <mcrha redhat com>
Date:   Fri Jul 20 18:13:49 2012 +0200

    Fix few more memory leaks

 mail/mail-send-recv.c |   15 +++++++++++++--
 mail/message-list.c   |    4 ++++
 2 files changed, 17 insertions(+), 2 deletions(-)
---
diff --git a/mail/mail-send-recv.c b/mail/mail-send-recv.c
index a8bade9..0d2cc10 100644
--- a/mail/mail-send-recv.c
+++ b/mail/mail-send-recv.c
@@ -881,10 +881,21 @@ receive_done (gint still_more,
 
 	/* remove/free this active download */
 	d(printf("%s: freeing info %p\n", G_STRFUNC, info));
-	if (info->type == SEND_SEND)
+	if (info->type == SEND_SEND) {
+		gpointer key = NULL, value = NULL;
+		if (!g_hash_table_lookup_extended (info->data->active, SEND_URI_KEY, &key, &value))
+			key = NULL;
+
 		g_hash_table_steal (info->data->active, SEND_URI_KEY);
-	else
+		g_free (key);
+	} else {
+		gpointer key = NULL, value = NULL;
+		if (!g_hash_table_lookup_extended (info->data->active, uid, &key, &value))
+			key = NULL;
+
 		g_hash_table_steal (info->data->active, uid);
+		g_free (key);
+	}
 	info->data->infos = g_list_remove (info->data->infos, info);
 
 	if (g_hash_table_size (info->data->active) == 0) {
diff --git a/mail/message-list.c b/mail/message-list.c
index 997e38d..7cce5f9 100644
--- a/mail/message-list.c
+++ b/mail/message-list.c
@@ -3908,6 +3908,10 @@ message_list_set_folder (MessageList *message_list,
 	if (message_list->folder) {
 		g_signal_handlers_disconnect_by_func (
 			message_list->folder, folder_changed, message_list);
+
+		if (message_list->uid_nodemap)
+			g_hash_table_foreach (message_list->uid_nodemap, (GHFunc) clear_info, message_list);
+
 		g_object_unref (message_list->folder);
 		message_list->folder = NULL;
 	}



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]