[grisbi-test] [PATCH 08/10] fix memory leaks in division_column_expanded ()

pbiava pierre.biava at nerim.net
Dim 21 Juil 19:52:31 CEST 2013


also rename gsb_data_transaction_get_transactions_list_by_date () in
gsb_data_transaction_get_metatree_transactions_list ()
---
 src/gsb_data_transaction.c | 13 ++++++++++---
 src/gsb_data_transaction.h |  2 +-
 src/metatree.c             |  9 +++------
 3 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/src/gsb_data_transaction.c b/src/gsb_data_transaction.c
index 689eefa..795b582 100644
--- a/src/gsb_data_transaction.c
+++ b/src/gsb_data_transaction.c
@@ -2591,7 +2591,7 @@ gint gsb_data_transaction_check_content_payment ( gint payment_number,
  *
  * \return the slist of transactions structures
  * */
-GSList *gsb_data_transaction_get_transactions_list_by_date ( void )
+GSList *gsb_data_transaction_get_metatree_transactions_list ( void )
 {
     GSList *list_tmp;
 
@@ -2600,12 +2600,19 @@ GSList *gsb_data_transaction_get_transactions_list_by_date ( void )
     else
         list_tmp = g_slist_copy ( transactions_list );
 
-    if ( etat.metatree_sort_transactions == 1 )
+    switch ( etat.metatree_sort_transactions )
+    {
+        case 1 :
         list_tmp = g_slist_sort (list_tmp,
                         (GCompareFunc) classement_sliste_transactions_par_date );
-    else
+        break;
+        case 2 :
         list_tmp = g_slist_sort (list_tmp,
                         (GCompareFunc) classement_sliste_transactions_par_date_decroissante );
+        break;
+        default :
+        break;
+    }
 
     return list_tmp;
 }
diff --git a/src/gsb_data_transaction.h b/src/gsb_data_transaction.h
index 4349988..9427aa5 100644
--- a/src/gsb_data_transaction.h
+++ b/src/gsb_data_transaction.h
@@ -56,6 +56,7 @@ gsb_real gsb_data_transaction_get_last_transaction_with_div_sub_div (
                         gint sub_div_nb,
                         gint type_div );
 gint gsb_data_transaction_get_marked_transaction ( gint transaction_number );
+GSList *gsb_data_transaction_get_metatree_transactions_list ( void );
 const gchar *gsb_data_transaction_get_method_of_payment_content ( gint transaction_number );
 gint gsb_data_transaction_get_method_of_payment_number ( gint transaction_number );
 gint gsb_data_transaction_get_mother_transaction_number ( gint transaction_number );
@@ -69,7 +70,6 @@ gint gsb_data_transaction_get_sub_category_number ( gint transaction_number );
 const gchar *gsb_data_transaction_get_transaction_id ( gint transaction_number );
 gint gsb_data_transaction_get_transaction_number ( gpointer transaction_pointer );
 GSList *gsb_data_transaction_get_transactions_list ( void );
-GSList *gsb_data_transaction_get_transactions_list_by_date ( void );
 GSList *gsb_import_get_transactions_list_for_import ( gint account_number,
                         GDate *first_date_import );
 const GDate *gsb_data_transaction_get_value_date ( gint transaction_number );
diff --git a/src/metatree.c b/src/metatree.c
index 2f37043..bc69668 100644
--- a/src/metatree.c
+++ b/src/metatree.c
@@ -1070,12 +1070,8 @@ gboolean division_column_expanded  ( GtkTreeView * treeview, GtkTreeIter * iter,
 			     META_TREE_NO_DIV_COLUMN, &no_division,
 			     META_TREE_NO_SUB_DIV_COLUMN, &no_sub_division,
 			     -1 );
-    if ( etat.metatree_sort_transactions )
-        list_tmp_transactions = gsb_data_transaction_get_transactions_list_by_date ();
-    else if ( etat.add_archive_in_total_balance )
-        list_tmp_transactions = gsb_data_transaction_get_complete_transactions_list ();
-    else
-        list_tmp_transactions = gsb_data_transaction_get_transactions_list ();
+
+    list_tmp_transactions = gsb_data_transaction_get_metatree_transactions_list ();
 
 	while ( list_tmp_transactions )
 	{
@@ -1108,6 +1104,7 @@ gboolean division_column_expanded  ( GtkTreeView * treeview, GtkTreeIter * iter,
 	    }
 	    list_tmp_transactions = list_tmp_transactions -> next;
 	}
+    g_slist_free ( list_tmp_transactions );
     }
 
     /* on colorise les lignes du tree_view */
-- 
1.8.1.5



Plus d'informations sur la liste de diffusion test