aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2014-06-17 00:12:58 +0800
committerMilan Crha <mcrha@redhat.com>2014-06-17 00:12:58 +0800
commit10186df707e08f25896ab69d5dc2d9fe7de1c860 (patch)
tree60abe5346a4111934740ba328ef6d5066afea37b
parent4a12e23cab29df538eeec9b5f4d7dcf9a2f6cca0 (diff)
downloadgsoc2013-evolution-10186df707e08f25896ab69d5dc2d9fe7de1c860.tar
gsoc2013-evolution-10186df707e08f25896ab69d5dc2d9fe7de1c860.tar.gz
gsoc2013-evolution-10186df707e08f25896ab69d5dc2d9fe7de1c860.tar.bz2
gsoc2013-evolution-10186df707e08f25896ab69d5dc2d9fe7de1c860.tar.lz
gsoc2013-evolution-10186df707e08f25896ab69d5dc2d9fe7de1c860.tar.xz
gsoc2013-evolution-10186df707e08f25896ab69d5dc2d9fe7de1c860.tar.zst
gsoc2013-evolution-10186df707e08f25896ab69d5dc2d9fe7de1c860.zip
Fix memory leaks when generating message list
It turned out that the values returned from ml_tree_value_at_ex() can be dynamically allocated, thus proper free functions should be called for these too.
-rw-r--r--mail/message-list.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/mail/message-list.c b/mail/message-list.c
index 7852e67179..995dac57d4 100644
--- a/mail/message-list.c
+++ b/mail/message-list.c
@@ -5144,8 +5144,16 @@ free_message_info_data (gpointer uid,
struct sort_array_data *sort_data)
{
if (data->values) {
- /* values in this array are not newly allocated, even ml_tree_value_at_ex
- * returns gpointer, not a gconstpointer */
+ gint ii;
+
+ for (ii = 0; ii < sort_data->sort_columns->len && ii < data->values->len; ii++) {
+ struct sort_column_data *scol = g_ptr_array_index (sort_data->sort_columns, ii);
+
+ message_list_free_value ((ETreeModel *) sort_data->message_list,
+ scol->col->spec->compare_col,
+ g_ptr_array_index (data->values, ii));
+ }
+
g_ptr_array_free (data->values, TRUE);
}