diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp index 069ae57878..d37b3eaef0 100644 --- a/src/wallet/wallet.cpp +++ b/src/wallet/wallet.cpp @@ -693,13 +693,13 @@ bool CWallet::MarkReplaced(const uint256& originalHash, const uint256& newHash) void CWallet::SetUsedDestinationState(const uint256& hash, unsigned int n, bool used) { + AssertLockHeld(cs_wallet); const CWalletTx* srctx = GetWalletTx(hash); if (!srctx) return; CTxDestination dst; if (ExtractDestination(srctx->tx->vout[n].scriptPubKey, dst)) { if (IsMine(dst)) { - LOCK(cs_wallet); if (used && !GetDestData(dst, "used", nullptr)) { AddDestData(dst, "used", "p"); // p for "present", opposite of absent (null) } else if (!used && GetDestData(dst, "used", nullptr)) { diff --git a/src/wallet/wallet.h b/src/wallet/wallet.h index f3b791441c..64c2293922 100644 --- a/src/wallet/wallet.h +++ b/src/wallet/wallet.h @@ -795,7 +795,7 @@ public: // Whether this or any UTXO with the same CTxDestination has been spent. bool IsUsedDestination(const CTxDestination& dst) const; bool IsUsedDestination(const uint256& hash, unsigned int n) const; - void SetUsedDestinationState(const uint256& hash, unsigned int n, bool used); + void SetUsedDestinationState(const uint256& hash, unsigned int n, bool used) EXCLUSIVE_LOCKS_REQUIRED(cs_wallet); std::vector GroupOutputs(const std::vector& outputs, bool single_coin) const;