|
|
|
@ -846,14 +846,19 @@ void CWallet::MarkConflicted(const uint256& hashBlock, const uint256& hashTx)
@@ -846,14 +846,19 @@ void CWallet::MarkConflicted(const uint256& hashBlock, const uint256& hashTx)
|
|
|
|
|
{ |
|
|
|
|
LOCK2(cs_main, cs_wallet); |
|
|
|
|
|
|
|
|
|
CBlockIndex* pindex; |
|
|
|
|
assert(mapBlockIndex.count(hashBlock)); |
|
|
|
|
pindex = mapBlockIndex[hashBlock]; |
|
|
|
|
int conflictconfirms = 0; |
|
|
|
|
if (chainActive.Contains(pindex)) { |
|
|
|
|
conflictconfirms = -(chainActive.Height() - pindex->nHeight + 1); |
|
|
|
|
if (mapBlockIndex.count(hashBlock)) { |
|
|
|
|
CBlockIndex* pindex = mapBlockIndex[hashBlock]; |
|
|
|
|
if (chainActive.Contains(pindex)) { |
|
|
|
|
conflictconfirms = -(chainActive.Height() - pindex->nHeight + 1); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
assert(conflictconfirms < 0); |
|
|
|
|
// If number of conflict confirms cannot be determined, this means
|
|
|
|
|
// that the block is still unknown or not yet part of the main chain,
|
|
|
|
|
// for example when loading the wallet during a reindex. Do nothing in that
|
|
|
|
|
// case.
|
|
|
|
|
if (conflictconfirms >= 0) |
|
|
|
|
return; |
|
|
|
|
|
|
|
|
|
// Do not flush the wallet here for performance reasons
|
|
|
|
|
CWalletDB walletdb(strWalletFile, "r+", false); |
|
|
|
|