From 49675de035e7c668d6857a32d929b7e1e85e83e3 Mon Sep 17 00:00:00 2001 From: Ava Chow Date: Tue, 20 Feb 2024 11:50:13 -0500 Subject: [PATCH] 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. --- src/wallet/wallet.cpp | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp index 373daed0916..36da4396106 100644 --- a/src/wallet/wallet.cpp +++ b/src/wallet/wallet.cpp @@ -1543,16 +1543,10 @@ void CWallet::BlockUntilSyncedToCurrentChain() const { // and a not-"is mine" (according to the filter) input. CAmount CWallet::GetDebit(const CTxIn &txin, const isminefilter& filter) const { - { - LOCK(cs_wallet); - const auto mi = mapWallet.find(txin.prevout.hash); - if (mi != mapWallet.end()) - { - 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; - } + LOCK(cs_wallet); + auto txo = GetTXO(txin.prevout); + if (txo && (txo->GetIsMine() & filter)) { + return txo->GetTxOut().nValue; } return 0; }