gnucash stable: [gnc-pricedb.cpp] plug leak when fiscal_end_date is null
Christopher Lam
clam at code.gnucash.org
Wed Nov 26 18:34:57 EST 2025
Updated via https://github.com/Gnucash/gnucash/commit/7c7c8b09 (commit)
from https://github.com/Gnucash/gnucash/commit/04af7b5f (commit)
commit 7c7c8b09923218c1feb9514e8e65e11027b9acd9
Author: Christopher Lam <christopher.lck at gmail.com>
Date: Wed Nov 26 10:42:07 2025 +0800
[gnc-pricedb.cpp] plug leak when fiscal_end_date is null
fiscal_end_date was assigned g_date_new but never freed. merge with
invalid fiscal_end_date too.
diff --git a/libgnucash/engine/gnc-pricedb.cpp b/libgnucash/engine/gnc-pricedb.cpp
index 83c317b63b..66946358cb 100644
--- a/libgnucash/engine/gnc-pricedb.cpp
+++ b/libgnucash/engine/gnc-pricedb.cpp
@@ -29,6 +29,7 @@
#include <stdint.h>
#include <stdlib.h>
#include "gnc-date.h"
+#include "gnc-datetime.hpp"
#include "gnc-pricedb-p.h"
#include <qofinstance-p.h>
@@ -1590,23 +1591,15 @@ gnc_pricedb_remove_old_prices (GNCPriceDB *db, GList *comm_list,
g_slist_length (data.list), datebuff);
// Check for a valid fiscal end of year date
- if (fiscal_end_date == nullptr)
+ if (fiscal_end_date == nullptr || !g_date_valid (fiscal_end_date))
{
- GDate today;
- gnc_gdate_set_today (&today);
- GDateYear year_now = g_date_get_year (&today);
- fiscal_end_date = g_date_new ();
- g_date_set_dmy (fiscal_end_date, 31, GDateMonth(12), year_now);
+ auto ymd = GncDate().year_month_day();
+ GDate end_this_year;
+ g_date_set_dmy (&end_this_year, 31, GDateMonth(12), ymd.year);
+ gnc_pricedb_process_removal_list (db, &end_this_year, data, keep);
}
- else if (g_date_valid (fiscal_end_date) == FALSE)
- {
- GDate today;
- gnc_gdate_set_today (&today);
- GDateYear year_now = g_date_get_year (&today);
- g_date_clear (fiscal_end_date, 1);
- g_date_set_dmy (fiscal_end_date, 31, GDateMonth(12), year_now);
- }
- gnc_pricedb_process_removal_list (db, fiscal_end_date, data, keep);
+ else
+ gnc_pricedb_process_removal_list (db, fiscal_end_date, data, keep);
g_slist_free (data.list);
LEAVE(" ");
Summary of changes:
libgnucash/engine/gnc-pricedb.cpp | 23 ++++++++---------------
1 file changed, 8 insertions(+), 15 deletions(-)
More information about the gnucash-changes
mailing list