AddToWalletIfInvolvingMe should test pIndex, not posInBlock

This commit is contained in:
John Newbery 2017-04-11 10:23:32 -04:00
parent 67023e9004
commit 714e4ad13d

View file

@ -957,9 +957,9 @@ bool CWallet::LoadToWallet(const CWalletTx& wtxIn)
/** /**
* Add a transaction to the wallet, or update it. pIndex and posInBlock should * Add a transaction to the wallet, or update it. pIndex and posInBlock should
* be set when the transaction was known to be included in a block. When * be set when the transaction was known to be included in a block. When
* posInBlock = SYNC_TRANSACTION_NOT_IN_BLOCK (-1) , then wallet state is not * pIndex == NULL, then wallet state is not updated in AddToWallet, but
* updated in AddToWallet, but notifications happen and cached balances are * notifications happen and cached balances are marked dirty.
* marked dirty. *
* If fUpdate is true, existing transactions will be updated. * If fUpdate is true, existing transactions will be updated.
* TODO: One exception to this is that the abandoned state is cleared under the * TODO: One exception to this is that the abandoned state is cleared under the
* assumption that any further notification of a transaction that was considered * assumption that any further notification of a transaction that was considered
@ -973,7 +973,7 @@ bool CWallet::AddToWalletIfInvolvingMe(const CTransactionRef& ptx, const CBlockI
{ {
AssertLockHeld(cs_wallet); AssertLockHeld(cs_wallet);
if (posInBlock != -1) { if (pIndex != NULL) {
BOOST_FOREACH(const CTxIn& txin, tx.vin) { BOOST_FOREACH(const CTxIn& txin, tx.vin) {
std::pair<TxSpends::const_iterator, TxSpends::const_iterator> range = mapTxSpends.equal_range(txin.prevout); std::pair<TxSpends::const_iterator, TxSpends::const_iterator> range = mapTxSpends.equal_range(txin.prevout);
while (range.first != range.second) { while (range.first != range.second) {
@ -993,7 +993,7 @@ bool CWallet::AddToWalletIfInvolvingMe(const CTransactionRef& ptx, const CBlockI
CWalletTx wtx(this, ptx); CWalletTx wtx(this, ptx);
// Get merkle branch if transaction was found in a block // Get merkle branch if transaction was found in a block
if (posInBlock != -1) if (pIndex != NULL)
wtx.SetMerkleBranch(pIndex, posInBlock); wtx.SetMerkleBranch(pIndex, posInBlock);
return AddToWallet(wtx, false); return AddToWallet(wtx, false);