Merge bitcoin-core/gui#102: Fix SplashScreen crash when run with -disablewallet

c056064a4a93be3601a63b37afea41f8b878df79 gui: Fix SplashScreen crash when run with -disablewallet (Hennadii Stepanov)

Pull request description:

  This PR fixes the bug introduced in https://github.com/bitcoin/bitcoin/pull/19099:

  ```
  $ src/qt/bitcoin-qt -disablewallet
  bitcoin-qt: interfaces/node.cpp:236: auto interfaces::(anonymous namespace)::NodeImpl::walletClient()::(anonymous class)::operator()() const: Assertion `"m_context->wallet_client" && check' failed.
  Aborted (core dumped)
  ```

ACKs for top commit:
  Sjors:
    tACK c056064
  promag:
    ACK c056064a4a93be3601a63b37afea41f8b878df79.

Tree-SHA512: 263d9efd5899cc6e447dfc5142bf911ca627149fac0a1c5e5b58dd196aa5e0d12fe13e3f750fb5f3c4338222f7959935d2f77391263f967dbca2e0e79a416a29
This commit is contained in:
MarcoFalke 2020-10-13 14:42:09 +02:00 committed by UdjinM6
parent ef8cf4bfea
commit 867b6efe4d
No known key found for this signature in database
GPG Key ID: 83592BD1400D58D9

View File

@ -17,6 +17,7 @@
#include <interfaces/wallet.h>
#include <qt/guiutil.h>
#include <qt/networkstyle.h>
#include <qt/walletmodel.h>
#include <ui_interface.h>
#include <util/system.h>
#include <util/translation.h>
@ -187,6 +188,7 @@ void SplashScreen::subscribeToCoreSignals()
void SplashScreen::handleLoadWallet()
{
#ifdef ENABLE_WALLET
if (!WalletModel::isWalletEnabled()) return;
m_handler_load_wallet = m_node.walletClient().handleLoadWallet([this](std::unique_ptr<interfaces::Wallet> wallet) {
m_connected_wallet_handlers.emplace_back(wallet->handleShowProgress(std::bind(ShowProgress, this, std::placeholders::_1, std::placeholders::_2, false)));
m_connected_wallets.emplace_back(std::move(wallet));
@ -200,7 +202,9 @@ void SplashScreen::unsubscribeFromCoreSignals()
m_handler_init_message->disconnect();
m_handler_show_progress->disconnect();
#ifdef ENABLE_WALLET
m_handler_load_wallet->disconnect();
if (m_handler_load_wallet != nullptr) {
m_handler_load_wallet->disconnect();
}
#endif // ENABLE_WALLET
for (const auto& handler : m_connected_wallet_handlers) {
handler->disconnect();