@@ -362,30 +362,26 @@ CAmount GetAvailableBalance(const CWallet& wallet, const CCoinControl* coinContr
362
362
return AvailableCoins (wallet, coinControl).GetTotalAmount ();
363
363
}
364
364
365
- const CTxOut& FindNonChangeParentOutput (const CWallet& wallet, const CTransaction& tx, int output )
365
+ const CTxOut& FindNonChangeParentOutput (const CWallet& wallet, const COutPoint& outpoint )
366
366
{
367
367
AssertLockHeld (wallet.cs_wallet );
368
- const CTransaction* ptx = &tx;
369
- int n = output;
368
+ const CWalletTx* wtx{Assert (wallet.GetWalletTx (outpoint.hash ))};
369
+
370
+ const CTransaction* ptx = wtx->tx .get ();
371
+ int n = outpoint.n ;
370
372
while (OutputIsChange (wallet, ptx->vout [n]) && ptx->vin .size () > 0 ) {
371
373
const COutPoint& prevout = ptx->vin [0 ].prevout ;
372
- auto it = wallet.mapWallet . find (prevout.hash );
373
- if (it == wallet. mapWallet . end () || it->second . tx ->vout .size () <= prevout.n ||
374
- !wallet.IsMine (it->second . tx ->vout [prevout.n ])) {
374
+ const CWalletTx* it = wallet.GetWalletTx (prevout.hash );
375
+ if (! it || it->tx ->vout .size () <= prevout.n ||
376
+ !wallet.IsMine (it->tx ->vout [prevout.n ])) {
375
377
break ;
376
378
}
377
- ptx = it->second . tx .get ();
379
+ ptx = it->tx .get ();
378
380
n = prevout.n ;
379
381
}
380
382
return ptx->vout [n];
381
383
}
382
384
383
- const CTxOut& FindNonChangeParentOutput (const CWallet& wallet, const COutPoint& outpoint)
384
- {
385
- AssertLockHeld (wallet.cs_wallet );
386
- return FindNonChangeParentOutput (wallet, *wallet.GetWalletTx (outpoint.hash )->tx , outpoint.n );
387
- }
388
-
389
385
std::map<CTxDestination, std::vector<COutput>> ListCoins (const CWallet& wallet)
390
386
{
391
387
AssertLockHeld (wallet.cs_wallet );
0 commit comments