gnucash stable: [dialog-payment] plug some GLists leaks
Christopher Lam
clam at code.gnucash.org
Sat Apr 8 04:53:55 EDT 2023
Updated via https://github.com/Gnucash/gnucash/commit/cb5a9acf (commit)
from https://github.com/Gnucash/gnucash/commit/5ebb5447 (commit)
commit cb5a9acf76183d176f244c3816fd0750fdf6bcad
Author: Christopher Lam <christopher.lck at gmail.com>
Date: Sat Apr 8 16:39:11 2023 +0800
[dialog-payment] plug some GLists leaks
and tidy up
diff --git a/gnucash/gnome/dialog-payment.c b/gnucash/gnome/dialog-payment.c
index 9b80d2b13b..1e62e2dcb5 100644
--- a/gnucash/gnome/dialog-payment.c
+++ b/gnucash/gnome/dialog-payment.c
@@ -1598,6 +1598,7 @@ static Split *select_payment_split (GtkWindow *parent, Transaction *txn)
* The only exception would be a lot link transaction
*/
GList *payment_splits = xaccTransGetPaymentAcctSplitList (txn);
+ Split *selected_split = NULL;
if (!payment_splits)
{
GtkWidget *dialog;
@@ -1620,8 +1621,6 @@ static Split *select_payment_split (GtkWindow *parent, Transaction *txn)
if (g_list_length(payment_splits) > 1)
{
- Split *selected_split = NULL;
- GList *node;
GtkWidget *first_rb = NULL;
int answer = GTK_BUTTONS_OK;
const char *message = _("While this transaction has multiple splits that can be considered\n"
@@ -1639,7 +1638,7 @@ static Split *select_payment_split (GtkWindow *parent, Transaction *txn)
gtk_box_pack_start (GTK_BOX(content), label, FALSE, TRUE, 0);
/* Add splits as selectable options to the dialog */
- for (node = payment_splits; node; node = node->next)
+ for (GList *node = payment_splits; node; node = node->next)
{
GtkWidget *rbutton;
Split *split = node->data;
@@ -1679,10 +1678,12 @@ static Split *select_payment_split (GtkWindow *parent, Transaction *txn)
}
gtk_widget_destroy (GTK_WIDGET(dialog));
- return selected_split;
}
else
- return payment_splits->data;
+ selected_split = payment_splits->data;
+
+ g_list_free (payment_splits);
+ return selected_split;
}
static GList *select_txn_lots (GtkWindow *parent, Transaction *txn, Account **post_acct, gboolean *abort)
@@ -1726,13 +1727,11 @@ static GList *select_txn_lots (GtkWindow *parent, Transaction *txn, Account **po
else
apar_splits_no_lot = g_list_prepend (apar_splits_no_lot, post_split);
}
- g_list_free (apar_splits);
/* If no post_acct was selected from the postlots, fall back to the first apar split's
* account if there is one. */
if (!*post_acct && apar_splits_no_lot)
*post_acct = xaccSplitGetAccount (apar_splits_no_lot->data);
- g_list_free (apar_splits_no_lot);
/* Abort if the txn has splits in more than one APAR account
* GnuCash can only handle one post account per payment transaction.
@@ -1771,6 +1770,9 @@ static GList *select_txn_lots (GtkWindow *parent, Transaction *txn, Account **po
txn_lots = NULL;
}
+ g_list_free (apar_splits);
+ g_list_free (apar_splits_no_lot);
+ g_list_free (unique_apar_accts);
return txn_lots;
}
Summary of changes:
gnucash/gnome/dialog-payment.c | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
More information about the gnucash-changes
mailing list