gnucash maint: Multiple changes pushed

Christopher Lam clam at code.gnucash.org
Sat Jul 30 01:43:23 EDT 2022


Updated	 via  https://github.com/Gnucash/gnucash/commit/accdf9e8 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/45aac539 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/67a1b7a8 (commit)
	from  https://github.com/Gnucash/gnucash/commit/78f74656 (commit)



commit accdf9e852e0a539a435497acee330857c87789e
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Sat Jul 30 13:39:34 2022 +0800

    [gnc-dense-cal] leaks in markdata and GTimer
    
    - mark->name wasn't correctly freed
    - don't unnecessarily allocate GTimer

diff --git a/gnucash/gnome-utils/gnc-dense-cal.c b/gnucash/gnome-utils/gnc-dense-cal.c
index 9fca03c76..132b9f459 100644
--- a/gnucash/gnome-utils/gnc-dense-cal.c
+++ b/gnucash/gnome-utils/gnc-dense-cal.c
@@ -818,8 +818,10 @@ gdc_free_all_mark_data(GncDenseCal *dcal)
     /* Remove the old mark data. */
     for (l = dcal->markData; l; l = l->next)
     {
-        g_list_free(((gdc_mark_data*)l->data)->ourMarks);
-        g_free((gdc_mark_data*)l->data);
+        gdc_mark_data *mark = l->data;
+        g_list_free (mark->ourMarks);
+        g_free (mark->name);
+        g_free (mark);
     }
     g_list_free(dcal->markData);
     dcal->markData = NULL;
@@ -902,13 +904,14 @@ gnc_dense_cal_draw_to_buffer(GncDenseCal *dcal)
     cairo_t *cr;
     gchar *primary_color_class, *secondary_color_class, *marker_color_class;
 
-    timer = g_timer_new();
     DEBUG("drawing");
     widget = GTK_WIDGET(dcal);
 
     if (!dcal->surface)
         return;
 
+    timer = g_timer_new();
+
     g_timer_start(timer);
     cr = cairo_create (dcal->surface);
     layout = gtk_widget_create_pango_layout(GTK_WIDGET(dcal), NULL);

commit 45aac53952092f9acb1e4e76e9d070ea739e165a
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Sat Jul 30 13:39:20 2022 +0800

    [gnc-split-reg] free tooltip text properly

diff --git a/gnucash/gnome/gnc-split-reg.c b/gnucash/gnome/gnc-split-reg.c
index 323fd857f..d6c37ce17 100644
--- a/gnucash/gnome/gnc-split-reg.c
+++ b/gnucash/gnome/gnc-split-reg.c
@@ -744,9 +744,8 @@ gsr_redraw_all_cb (GnucashRegister *g_reg, gpointer data)
 
             gtk_widget_set_tooltip_text (GTK_WIDGET(gsr->filter_label), gsr->filter_text);
 
-            if (old_tt_text)
-                g_free (old_tt_text);
         }
+        g_free (old_tt_text);
     }
 
     if (gsr->shares_label == NULL && gsr->value_label == NULL)

commit 67a1b7a873badcd1dc343e11997217941bbded6f
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Sat Jul 30 12:52:16 2022 +0800

    [gnc-sx-instance-model] free GHashTable keys when destroying

diff --git a/libgnucash/app-utils/gnc-sx-instance-model.c b/libgnucash/app-utils/gnc-sx-instance-model.c
index 75c624785..dcb51f8cb 100644
--- a/libgnucash/app-utils/gnc-sx-instance-model.c
+++ b/libgnucash/app-utils/gnc-sx-instance-model.c
@@ -207,9 +207,7 @@ gnc_sx_instance_get_variables_for_parser(GHashTable *instance_var_hash)
 {
     GHashTable *parser_vars;
 
-    /* fixme: the following GHashTable should g_free keys and
-       gnc_sx_variable_free the values, however this breaks SX formulas */
-    parser_vars = g_hash_table_new(g_str_hash, g_str_equal);
+    parser_vars = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
     g_hash_table_foreach(instance_var_hash, (GHFunc)_sx_var_to_raw_numeric, parser_vars);
     return parser_vars;
 }



Summary of changes:
 gnucash/gnome-utils/gnc-dense-cal.c          | 9 ++++++---
 gnucash/gnome/gnc-split-reg.c                | 3 +--
 libgnucash/app-utils/gnc-sx-instance-model.c | 4 +---
 3 files changed, 8 insertions(+), 8 deletions(-)



More information about the gnucash-changes mailing list