From e26e665f9f64a962dd56053be817cc953e714847 Mon Sep 17 00:00:00 2001 From: Sebastian Falbesoner Date: Mon, 30 Oct 2023 22:06:02 +0100 Subject: [PATCH] gui: fix crash on selecting "Mask values" in transaction view This commits fixes a crash bug that can be caused with the following steps: - change to the "Transactions" view - right-click on an arbitrary transaction -> "Show transaction details" - close the transaction detail window again - select "Settings" -> "Mask values" The problem is that the list of opened dialogs, tracked in the member variable `m_opened_dialogs`, is only ever appended with newly opened transaction detail dialog pointers, but never removed. This leads to dangling pointers in the list, and if the "Mask values" menu item is selected, a crash is caused in the course of trying to close the opened transaction detail dialogs (see `closeOpenedDialogs()` method). Fix this by removing the pointer from the list if the corresponding widget is destroyed. --- src/qt/transactionview.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/qt/transactionview.cpp b/src/qt/transactionview.cpp index 67af62285de..7e24dbd3ec9 100644 --- a/src/qt/transactionview.cpp +++ b/src/qt/transactionview.cpp @@ -531,6 +531,9 @@ void TransactionView::showDetails() TransactionDescDialog *dlg = new TransactionDescDialog(selection.at(0)); dlg->setAttribute(Qt::WA_DeleteOnClose); m_opened_dialogs.append(dlg); + connect(dlg, &QObject::destroyed, [this, dlg] { + m_opened_dialogs.removeOne(dlg); + }); dlg->show(); } }