diff options
author | Wladimir J. van der Laan <laanwj@protonmail.com> | 2020-08-27 16:21:32 +0200 |
---|---|---|
committer | Wladimir J. van der Laan <laanwj@protonmail.com> | 2020-08-27 16:21:37 +0200 |
commit | 91af7ef831d32a9db7719c64442a7d76cef5a931 (patch) | |
tree | c29be12c807d96b927afa83aafcc59b454da61eb /src/interfaces | |
parent | 2562d5d23863b6ef6cbdd9c34db5e485d9dc8406 (diff) | |
parent | b8405b833ad28351c80fb10f6f896f974013fd9e (diff) | |
download | bitcoin-91af7ef831d32a9db7719c64442a7d76cef5a931.tar.xz |
Merge #19289: wallet: GetWalletTx and IsMine require cs_wallet lock
b8405b833ad28351c80fb10f6f896f974013fd9e wallet: IsChange requires cs_wallet lock (João Barbosa)
d8441f30ff57e4ae98cff6694c995eaffc19c51a wallet: IsMine overloads require cs_wallet lock (João Barbosa)
a13cafc6c6998baedf3c5766259c21fcd763b99e wallet: GetWalletTx requires cs_wallet lock (João Barbosa)
Pull request description:
This change removes some unlock/lock and lock/lock cases regarding `GetWalletTx` and `IsMine` overloads.
ACKs for top commit:
laanwj:
Code review ACK b8405b833ad28351c80fb10f6f896f974013fd9e
ryanofsky:
Code review ACK b8405b833ad28351c80fb10f6f896f974013fd9e. Just new commit since last review changing IsChange GetChange locks and adding annotations
Tree-SHA512: 40d37c4fe5d10a1407f57d899d5822bb285633d8dbfad8afcf15a9b41b428ed9971a9a7b1aae84318371155132df3002699a15dab56e004527d50c889829187d
Diffstat (limited to 'src/interfaces')
-rw-r--r-- | src/interfaces/wallet.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/interfaces/wallet.cpp b/src/interfaces/wallet.cpp index 7fd24425cf..937e602fb0 100644 --- a/src/interfaces/wallet.cpp +++ b/src/interfaces/wallet.cpp @@ -37,6 +37,7 @@ namespace { //! Construct wallet tx struct. WalletTx MakeWalletTx(CWallet& wallet, const CWalletTx& wtx) { + LOCK(wallet.cs_wallet); WalletTx result; result.tx = wtx.tx; result.txin_is_mine.reserve(wtx.tx->vin.size()); @@ -132,7 +133,11 @@ public: { return m_wallet->SignMessage(message, pkhash, str_sig); } - bool isSpendable(const CTxDestination& dest) override { return m_wallet->IsMine(dest) & ISMINE_SPENDABLE; } + bool isSpendable(const CTxDestination& dest) override + { + LOCK(m_wallet->cs_wallet); + return m_wallet->IsMine(dest) & ISMINE_SPENDABLE; + } bool haveWatchOnly() override { auto spk_man = m_wallet->GetLegacyScriptPubKeyMan(); |