Skip to content

Commit 7c7c8b0

Browse files
[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.
1 parent 04af7b5 commit 7c7c8b0

File tree

1 file changed

+8
-15
lines changed

1 file changed

+8
-15
lines changed

libgnucash/engine/gnc-pricedb.cpp

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
#include <stdint.h>
3030
#include <stdlib.h>
3131
#include "gnc-date.h"
32+
#include "gnc-datetime.hpp"
3233
#include "gnc-pricedb-p.h"
3334
#include <qofinstance-p.h>
3435

@@ -1590,23 +1591,15 @@ gnc_pricedb_remove_old_prices (GNCPriceDB *db, GList *comm_list,
15901591
g_slist_length (data.list), datebuff);
15911592

15921593
// Check for a valid fiscal end of year date
1593-
if (fiscal_end_date == nullptr)
1594+
if (fiscal_end_date == nullptr || !g_date_valid (fiscal_end_date))
15941595
{
1595-
GDate today;
1596-
gnc_gdate_set_today (&today);
1597-
GDateYear year_now = g_date_get_year (&today);
1598-
fiscal_end_date = g_date_new ();
1599-
g_date_set_dmy (fiscal_end_date, 31, GDateMonth(12), year_now);
1596+
auto ymd = GncDate().year_month_day();
1597+
GDate end_this_year;
1598+
g_date_set_dmy (&end_this_year, 31, GDateMonth(12), ymd.year);
1599+
gnc_pricedb_process_removal_list (db, &end_this_year, data, keep);
16001600
}
1601-
else if (g_date_valid (fiscal_end_date) == FALSE)
1602-
{
1603-
GDate today;
1604-
gnc_gdate_set_today (&today);
1605-
GDateYear year_now = g_date_get_year (&today);
1606-
g_date_clear (fiscal_end_date, 1);
1607-
g_date_set_dmy (fiscal_end_date, 31, GDateMonth(12), year_now);
1608-
}
1609-
gnc_pricedb_process_removal_list (db, fiscal_end_date, data, keep);
1601+
else
1602+
gnc_pricedb_process_removal_list (db, fiscal_end_date, data, keep);
16101603

16111604
g_slist_free (data.list);
16121605
LEAVE(" ");

0 commit comments

Comments
 (0)