From 826221b298519d8772e58402097328ee1bb2700c Mon Sep 17 00:00:00 2001 From: UdjinM6 Date: Fri, 10 Oct 2025 19:11:28 +0300 Subject: [PATCH] revert: Revert "merge bitcoin-core/gui#835: Fix crash when closing wallet" This reverts commit 20763f1101484fa1bbaa46c6aa9b3aa7766c11b2. --- src/qt/walletcontroller.cpp | 18 ++++++++---------- src/qt/walletcontroller.h | 3 --- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/src/qt/walletcontroller.cpp b/src/qt/walletcontroller.cpp index 935727806bc7..eacb3ffc4832 100644 --- a/src/qt/walletcontroller.cpp +++ b/src/qt/walletcontroller.cpp @@ -78,14 +78,6 @@ std::map WalletController::listWalletDir() const return wallets; } -void WalletController::removeWallet(WalletModel* wallet_model) -{ - // Once the wallet is successfully removed from the node, the model will emit the 'WalletModel::unload' signal. - // This signal is already connected and will complete the removal of the view from the GUI. - // Look at 'WalletController::getOrCreateWallet' for the signal connection. - wallet_model->wallet().remove(); -} - void WalletController::closeWallet(WalletModel* wallet_model, QWidget* parent) { QMessageBox box(parent); @@ -96,7 +88,10 @@ void WalletController::closeWallet(WalletModel* wallet_model, QWidget* parent) box.setDefaultButton(QMessageBox::Yes); if (box.exec() != QMessageBox::Yes) return; - removeWallet(wallet_model); + // First remove wallet from node. + wallet_model->wallet().remove(); + // Now release the model. + removeAndDeleteWallet(wallet_model); } void WalletController::closeAllWallets(QWidget* parent) @@ -109,8 +104,11 @@ void WalletController::closeAllWallets(QWidget* parent) QMutexLocker locker(&m_mutex); for (WalletModel* wallet_model : m_wallets) { - removeWallet(wallet_model); + wallet_model->wallet().remove(); + Q_EMIT walletRemoved(wallet_model); + delete wallet_model; } + m_wallets.clear(); } WalletModel* WalletController::getOrCreateWallet(std::unique_ptr wallet) diff --git a/src/qt/walletcontroller.h b/src/qt/walletcontroller.h index 0546c7f9ebd1..ccb7dbc62d51 100644 --- a/src/qt/walletcontroller.h +++ b/src/qt/walletcontroller.h @@ -79,9 +79,6 @@ class WalletController : public QObject std::unique_ptr m_handler_load_wallet; friend class WalletControllerActivity; - - //! Starts the wallet closure procedure - void removeWallet(WalletModel* wallet_model); }; class WalletControllerActivity : public QObject