wallet: Avoid recursive lock in CWallet::SetUsedDestinationState

This commit is contained in:
João Barbosa
2019-11-02 16:14:36 +00:00
parent 463eab5e14
commit 01f45dd00e
2 changed files with 2 additions and 2 deletions

View File

@@ -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)) {