diff --git a/gnucash/gnome/assistant-stock-transaction.cpp b/gnucash/gnome/assistant-stock-transaction.cpp index 47e3c71156..f4efeea365 100644 --- a/gnucash/gnome/assistant-stock-transaction.cpp +++ b/gnucash/gnome/assistant-stock-transaction.cpp @@ -2655,12 +2655,6 @@ 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) { @@ -2671,12 +2665,18 @@ 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. */ - if (g_hash_table_find (changes, (GHRFunc)is_destroying, nullptr)) + auto list = g_hash_table_get_values(changes); + for (auto node = list; node; node = g_list_next(node)) { - PWARN ("Stock account destroyed, cancelling assistant."); - auto controller = static_cast(user_data); - gnc_close_gui_component_by_data(ASSISTANT_STOCK_TRANSACTION_CM_CLASS, controller); + auto change{static_cast(node->data)}; + if (change->event_mask & QOF_EVENT_DESTROY) + { + PWARN ("Stock account destroyed, cancelling assistant."); + auto controller = static_cast(user_data); + gnc_close_gui_component_by_data(ASSISTANT_STOCK_TRANSACTION_CM_CLASS, controller); + } } + g_list_free (list); } static void