mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-08-26 06:01:10 +02:00
Use CWallet::m_last_block_processed_height in GetDepthInMainChain
Avoid to lock chain to query state thanks to tracking last block height in CWallet.
This commit is contained in:
@@ -3936,9 +3936,11 @@ CKeyPool::CKeyPool(const CPubKey& vchPubKeyIn, bool internalIn)
|
|||||||
|
|
||||||
int CWalletTx::GetDepthInMainChain(interfaces::Chain::Lock& locked_chain) const
|
int CWalletTx::GetDepthInMainChain(interfaces::Chain::Lock& locked_chain) const
|
||||||
{
|
{
|
||||||
|
assert(pwallet != nullptr);
|
||||||
|
AssertLockHeld(pwallet->cs_wallet);
|
||||||
if (isUnconfirmed() || isAbandoned()) return 0;
|
if (isUnconfirmed() || isAbandoned()) return 0;
|
||||||
|
|
||||||
return locked_chain.getBlockDepth(m_confirm.hashBlock) * (isConflicted() ? -1 : 1);
|
return (pwallet->GetLastBlockHeight() - m_confirm.block_height + 1) * (isConflicted() ? -1 : 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
int CWalletTx::GetBlocksToMaturity(interfaces::Chain::Lock& locked_chain) const
|
int CWalletTx::GetBlocksToMaturity(interfaces::Chain::Lock& locked_chain) const
|
||||||
|
@@ -499,7 +499,13 @@ public:
|
|||||||
* 0 : in memory pool, waiting to be included in a block
|
* 0 : in memory pool, waiting to be included in a block
|
||||||
* >=1 : this many blocks deep in the main chain
|
* >=1 : this many blocks deep in the main chain
|
||||||
*/
|
*/
|
||||||
int GetDepthInMainChain(interfaces::Chain::Lock& locked_chain) const;
|
// TODO: Remove "NO_THREAD_SAFETY_ANALYSIS" and replace it with the correct
|
||||||
|
// annotation "EXCLUSIVE_LOCKS_REQUIRED(pwallet->cs_wallet)". The annotation
|
||||||
|
// "NO_THREAD_SAFETY_ANALYSIS" was temporarily added to avoid having to
|
||||||
|
// resolve the issue of member access into incomplete type CWallet. Note
|
||||||
|
// that we still have the runtime check "AssertLockHeld(pwallet->cs_wallet)"
|
||||||
|
// in place.
|
||||||
|
int GetDepthInMainChain(interfaces::Chain::Lock& locked_chain) const NO_THREAD_SAFETY_ANALYSIS;
|
||||||
bool IsInMainChain(interfaces::Chain::Lock& locked_chain) const { return GetDepthInMainChain(locked_chain) > 0; }
|
bool IsInMainChain(interfaces::Chain::Lock& locked_chain) const { return GetDepthInMainChain(locked_chain) > 0; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user