gnucash maint: Multiple changes pushed

Christopher Lam clam at code.gnucash.org
Mon Aug 8 01:59:08 EDT 2022


Updated	 via  https://github.com/Gnucash/gnucash/commit/de7a6308 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/ad27be33 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/b94164e8 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/b4d3d495 (commit)
	from  https://github.com/Gnucash/gnucash/commit/322a5998 (commit)



commit de7a63082be4eebf913814f28b046eaca7b53aad
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Mon Aug 8 09:05:19 2022 +0800

    [gnc-sx-instance-model] leaks: free temporal_state
    
    it's a simple struct containing GDate and int

diff --git a/libgnucash/app-utils/gnc-sx-instance-model.c b/libgnucash/app-utils/gnc-sx-instance-model.c
index 39507aaeb..4e114eb11 100644
--- a/libgnucash/app-utils/gnc-sx-instance-model.c
+++ b/libgnucash/app-utils/gnc-sx-instance-model.c
@@ -533,6 +533,8 @@ _gnc_sx_gen_instances(gpointer *data, gpointer user_data)
 
     instances->instance_list = g_list_reverse (instlist);
 
+    gnc_sx_destroy_temporal_state (temporal_state);
+
     return instances;
 }
 

commit ad27be333ec40c5eaec3a51d57119e27d9bd7a8f
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Mon Aug 8 12:59:34 2022 +0800

    [gnc-sx-instance-model] prepend GList loops instead of append

diff --git a/libgnucash/app-utils/gnc-sx-instance-model.c b/libgnucash/app-utils/gnc-sx-instance-model.c
index c3a433857..39507aaeb 100644
--- a/libgnucash/app-utils/gnc-sx-instance-model.c
+++ b/libgnucash/app-utils/gnc-sx-instance-model.c
@@ -451,7 +451,7 @@ static void
 _build_list_from_hash_elts(gpointer key, gpointer value, gpointer user_data)
 {
     GList **list = (GList**)user_data;
-    *list = g_list_insert_sorted(*list, value, _compare_GncSxVariables);
+    *list = g_list_prepend (*list, value);
 }
 
 GList *
@@ -459,13 +459,14 @@ gnc_sx_instance_get_variables(GncSxInstance *inst)
 {
     GList *vars = NULL;
     g_hash_table_foreach(inst->variable_bindings, _build_list_from_hash_elts, &vars);
-    return vars;
+    return g_list_sort (vars, _compare_GncSxVariables);
 }
 
 static GncSxInstances*
 _gnc_sx_gen_instances(gpointer *data, gpointer user_data)
 {
     GncSxInstances *instances = g_new0(GncSxInstances, 1);
+    GList *instlist = NULL;
     SchedXaction *sx = (SchedXaction*)data;
     const GDate *range_end = (const GDate*)user_data;
     GDate creation_end, remind_end;
@@ -493,8 +494,7 @@ _gnc_sx_gen_instances(gpointer *data, gpointer user_data)
             seq_num = gnc_sx_get_instance_count(sx, postponed->data);
             inst = gnc_sx_instance_new(instances, SX_INSTANCE_STATE_POSTPONED,
                                        &inst_date, postponed->data, seq_num);
-            instances->instance_list =
-                g_list_append(instances->instance_list, inst);
+            instlist = g_list_prepend (instlist, inst);
             gnc_sx_destroy_temporal_state(temporal_state);
             temporal_state = gnc_sx_clone_temporal_state(postponed->data);
             gnc_sx_incr_temporal_state(sx, temporal_state);
@@ -512,7 +512,7 @@ _gnc_sx_gen_instances(gpointer *data, gpointer user_data)
         seq_num = gnc_sx_get_instance_count(sx, temporal_state);
         inst = gnc_sx_instance_new(instances, SX_INSTANCE_STATE_TO_CREATE,
                                    &cur_date, temporal_state, seq_num);
-        instances->instance_list = g_list_append(instances->instance_list, inst);
+        instlist = g_list_prepend (instlist, inst);
         gnc_sx_incr_temporal_state(sx, temporal_state);
         cur_date = xaccSchedXactionGetNextInstance(sx, temporal_state);
     }
@@ -526,12 +526,13 @@ _gnc_sx_gen_instances(gpointer *data, gpointer user_data)
         seq_num = gnc_sx_get_instance_count(sx, temporal_state);
         inst = gnc_sx_instance_new(instances, SX_INSTANCE_STATE_REMINDER,
                                    &cur_date, temporal_state, seq_num);
-        instances->instance_list = g_list_append(instances->instance_list,
-                                                 inst);
+        instlist = g_list_prepend (instlist, inst);
         gnc_sx_incr_temporal_state(sx, temporal_state);
         cur_date = xaccSchedXactionGetNextInstance(sx, temporal_state);
     }
 
+    instances->instance_list = g_list_reverse (instlist);
+
     return instances;
 }
 
@@ -848,7 +849,7 @@ _find_unreferenced_vars(gchar *key,
         !g_hash_table_lookup_extended(cb_pair->hash, key, NULL, NULL))
     {
         DEBUG("variable [%s] not found", key);
-        cb_pair->list = g_list_append(cb_pair->list, key);
+        cb_pair->list = g_list_prepend (cb_pair->list, key);
     }
 }
 
@@ -928,7 +929,7 @@ gnc_sx_instance_model_update_sx_instances(GncSxInstanceModel *model, SchedXactio
             removed_cb_data.hash = new_instances->variable_names;
             removed_cb_data.list = NULL;
             g_hash_table_foreach(existing->variable_names, (GHFunc)_find_unreferenced_vars, &removed_cb_data);
-            removed_var_names = removed_cb_data.list;
+            removed_var_names = g_list_reverse (removed_cb_data.list);
         }
         DEBUG("%d removed variables", g_list_length(removed_var_names));
 
@@ -938,7 +939,7 @@ gnc_sx_instance_model_update_sx_instances(GncSxInstanceModel *model, SchedXactio
             added_cb_data.hash = existing->variable_names;
             added_cb_data.list = NULL;
             g_hash_table_foreach(new_instances->variable_names, (GHFunc)_find_unreferenced_vars, &added_cb_data);
-            added_var_names = added_cb_data.list;
+            added_var_names = g_list_reverse (added_cb_data.list);
         }
         DEBUG("%d added variables", g_list_length(added_var_names));
 
@@ -1556,7 +1557,7 @@ gnc_sx_instance_model_set_variable(GncSxInstanceModel *model,
 static void
 _list_from_hash_elts(gpointer key, gpointer value, GList **result_list)
 {
-    *result_list = g_list_append(*result_list, value);
+    *result_list = g_list_prepend (*result_list, value);
 }
 
 GList*
@@ -1584,7 +1585,7 @@ gnc_sx_instance_model_check_variables(GncSxInstanceModel *model)
                     GncSxVariableNeeded *need = g_new0(GncSxVariableNeeded, 1);
                     need->instance = inst;
                     need->variable = var;
-                    rtn = g_list_append(rtn, need);
+                    rtn = g_list_prepend (rtn, need);
                 }
             }
             g_list_free(var_list);

commit b94164e8ffca14cb9294d3c5efc2d7ebcd1cbdc8
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Mon Aug 8 12:59:50 2022 +0800

    [gnc-tree-view-price] prepend GList loops instead of append

diff --git a/gnucash/gnome-utils/gnc-tree-view-price.c b/gnucash/gnome-utils/gnc-tree-view-price.c
index 77a42457e..abe5302d4 100644
--- a/gnucash/gnome-utils/gnc-tree-view-price.c
+++ b/gnucash/gnome-utils/gnc-tree-view-price.c
@@ -762,7 +762,7 @@ get_selected_prices_helper (GtkTreeModel *s_model,
     price = gnc_tree_model_price_get_price (GNC_TREE_MODEL_PRICE(model),
                                             &iter);
     if (price)
-        *return_list = g_list_append(*return_list, price);
+        *return_list = g_list_prepend (*return_list, price);
 }
 
 /*
@@ -780,7 +780,7 @@ gnc_tree_view_price_get_selected_prices (GncTreeViewPrice *view)
 
     selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(view));
     gtk_tree_selection_selected_foreach(selection, get_selected_prices_helper, &return_list);
-    return return_list;
+    return g_list_reverse (return_list);
 }
 
 static void
@@ -805,7 +805,7 @@ get_selected_commodity_helper (GtkTreeModel *s_model,
     commodity = gnc_tree_model_price_get_commodity (GNC_TREE_MODEL_PRICE(model), &iter);
 
     if (commodity)
-        *return_list = g_list_append(*return_list, commodity);
+        *return_list = g_list_prepend (*return_list, commodity);
 }
 
 /*
@@ -824,5 +824,5 @@ gnc_tree_view_price_get_selected_commodities (GncTreeViewPrice *view)
 
     selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(view));
     gtk_tree_selection_selected_foreach (selection, get_selected_commodity_helper, &return_list);
-    return return_list;
+    return g_list_reverse (return_list);
 }

commit b4d3d4952d41782cf09e884c1df751e26549a445
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Mon Aug 8 12:59:42 2022 +0800

    [gnc-tree-model-split-reg] prepend GList loops instead of append

diff --git a/gnucash/gnome-utils/gnc-tree-model-split-reg.c b/gnucash/gnome-utils/gnc-tree-model-split-reg.c
index c333b48b0..8f911df38 100644
--- a/gnucash/gnome-utils/gnc-tree-model-split-reg.c
+++ b/gnucash/gnome-utils/gnc-tree-model-split-reg.c
@@ -516,7 +516,7 @@ gtm_sr_foreach_func (GtkTreeModel *model,
     g_assert ( rowref_list != NULL );
 
     rowref = gtk_tree_row_reference_new (model, path);
-    *rowref_list = g_list_append (*rowref_list, rowref);
+    *rowref_list = g_list_prepend (*rowref_list, rowref);
 
     return FALSE; /* do not stop walking the store, call us with next row */
 }
@@ -530,8 +530,6 @@ gtm_sr_remove_all_rows (GncTreeModelSplitReg *model)
 
     gtk_tree_model_foreach (GTK_TREE_MODEL(model), (GtkTreeModelForeachFunc)gtm_sr_foreach_func, &rr_list);
 
-    rr_list = g_list_reverse (rr_list);
-
     for ( node = rr_list;  node != NULL;  node = node->next )
     {
         GtkTreePath *path;



Summary of changes:
 gnucash/gnome-utils/gnc-tree-model-split-reg.c |  4 +---
 gnucash/gnome-utils/gnc-tree-view-price.c      |  8 ++++----
 libgnucash/app-utils/gnc-sx-instance-model.c   | 27 ++++++++++++++------------
 3 files changed, 20 insertions(+), 19 deletions(-)



More information about the gnucash-changes mailing list