gnucash stable: [assistant-stock-transaction] refresh_handler: avoid leaking GList*
Christopher Lam
clam at code.gnucash.org
Sat Sep 16 20:36:42 EDT 2023
Updated via https://github.com/Gnucash/gnucash/commit/41167e32 (commit)
from https://github.com/Gnucash/gnucash/commit/09474bb2 (commit)
commit 41167e3270c1380c3d84c50ce7675359cc70ba9d
Author: Christopher Lam <christopher.lck at gmail.com>
Date: Sun Sep 17 00:37:42 2023 +0800
[assistant-stock-transaction] refresh_handler: avoid leaking GList*
by using scanning the GHashTable directly.
diff --git a/gnucash/gnome/assistant-stock-transaction.cpp b/gnucash/gnome/assistant-stock-transaction.cpp
index 2c15423612..bc29ecbfb2 100644
--- a/gnucash/gnome/assistant-stock-transaction.cpp
+++ b/gnucash/gnome/assistant-stock-transaction.cpp
@@ -2639,6 +2639,12 @@ stock_assistant_cancel_cb (GtkAssistant *assistant, gpointer user_data)
}
+static bool
+is_destroying (gpointer key, EventInfo* change, gpointer user_data)
+{
+ return (change->event_mask & QOF_EVENT_DESTROY);
+};
+
static void
refresh_handler (GHashTable *changes, gpointer user_data)
{
@@ -2649,16 +2655,11 @@ refresh_handler (GHashTable *changes, gpointer user_data)
* should be only one entry, so just get the value and see if it
* matches QOF_EVENT_DESTROY.
*/
- auto list = g_hash_table_get_values(changes);
- for (auto node = list; node; node = g_list_next(node))
+ if (g_hash_table_find (changes, (GHRFunc)is_destroying, nullptr))
{
- auto change{static_cast<EventInfo*>(node->data)};
- if (change->event_mask & QOF_EVENT_DESTROY)
- {
- PWARN ("Stock account destroyed, cancelling assistant.");
- auto controller = static_cast<StockAssistantController*>(user_data);
- gnc_close_gui_component_by_data(ASSISTANT_STOCK_TRANSACTION_CM_CLASS, controller);
- }
+ PWARN ("Stock account destroyed, cancelling assistant.");
+ auto controller = static_cast<StockAssistantController*>(user_data);
+ gnc_close_gui_component_by_data(ASSISTANT_STOCK_TRANSACTION_CM_CLASS, controller);
}
}
Summary of changes:
gnucash/gnome/assistant-stock-transaction.cpp | 19 ++++++++++---------
1 file changed, 10 insertions(+), 9 deletions(-)
More information about the gnucash-changes
mailing list