wallet: Have GetDebit use the wallet's TXO set
Instead of looking up the previous tx in mapWallet, and then calling IsMine on the specified output, use the TXO set and its cached IsMine value.
This commit is contained in:
1 parent
17d453cb3a
commit
49675de035
1 file changed
+4
-10
+4
-10
@@ -1543,16 +1543,10 @@ void CWallet::BlockUntilSyncedToCurrentChain() const {
|
|||||||
// and a not-"is mine" (according to the filter) input.
|
// and a not-"is mine" (according to the filter) input.
|
||||||
CAmount CWallet::GetDebit(const CTxIn &txin, const isminefilter& filter) const
|
CAmount CWallet::GetDebit(const CTxIn &txin, const isminefilter& filter) const
|
||||||
{
|
{
|
||||||
{
|
LOCK(cs_wallet);
|
||||||
LOCK(cs_wallet);
|
auto txo = GetTXO(txin.prevout);
|
||||||
const auto mi = mapWallet.find(txin.prevout.hash);
|
if (txo && (txo->GetIsMine() & filter)) {
|
||||||
if (mi != mapWallet.end())
|
return txo->GetTxOut().nValue;
|
||||||
{
|
|
||||||
const CWalletTx& prev = (*mi).second;
|
|
||||||
if (txin.prevout.n < prev.tx->vout.size())
|
|
||||||
if (IsMine(prev.tx->vout[txin.prevout.n]) & filter)
|
|
||||||
return prev.tx->vout[txin.prevout.n].nValue;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user