Default to bnb_used = false as there are many cases where BnB is not used

This commit is contained in:
Andrew Chow 2019-11-25 02:19:57 -05:00
parent 0b79caf658
commit ff330badd4

View file

@ -2270,12 +2270,12 @@ bool CWallet::SelectCoins(const std::vector<COutput>& vAvailableCoins, const CAm
std::vector<COutput> vCoins(vAvailableCoins); std::vector<COutput> vCoins(vAvailableCoins);
CAmount value_to_select = nTargetValue; CAmount value_to_select = nTargetValue;
// Default to bnb was not used. If we use it, we set it later
bnb_used = false;
// coin control -> return all selected outputs (we want all selected to go into the transaction for sure) // coin control -> return all selected outputs (we want all selected to go into the transaction for sure)
if (coin_control.HasSelected() && !coin_control.fAllowOtherInputs) if (coin_control.HasSelected() && !coin_control.fAllowOtherInputs)
{ {
// We didn't use BnB here, so set it to false.
bnb_used = false;
for (const COutput& out : vCoins) for (const COutput& out : vCoins)
{ {
if (!out.fSpendable) if (!out.fSpendable)
@ -2300,14 +2300,12 @@ bool CWallet::SelectCoins(const std::vector<COutput>& vAvailableCoins, const CAm
const CWalletTx& wtx = it->second; const CWalletTx& wtx = it->second;
// Clearly invalid input, fail // Clearly invalid input, fail
if (wtx.tx->vout.size() <= outpoint.n) { if (wtx.tx->vout.size() <= outpoint.n) {
bnb_used = false;
return false; return false;
} }
// Just to calculate the marginal byte size // Just to calculate the marginal byte size
CInputCoin coin(wtx.tx, outpoint.n, wtx.GetSpendSize(outpoint.n, false)); CInputCoin coin(wtx.tx, outpoint.n, wtx.GetSpendSize(outpoint.n, false));
nValueFromPresetInputs += coin.txout.nValue; nValueFromPresetInputs += coin.txout.nValue;
if (coin.m_input_bytes <= 0) { if (coin.m_input_bytes <= 0) {
bnb_used = false;
return false; // Not solvable, can't estimate size for fee return false; // Not solvable, can't estimate size for fee
} }
coin.effective_value = coin.txout.nValue - coin_selection_params.effective_fee.GetFee(coin.m_input_bytes); coin.effective_value = coin.txout.nValue - coin_selection_params.effective_fee.GetFee(coin.m_input_bytes);
@ -2318,7 +2316,6 @@ bool CWallet::SelectCoins(const std::vector<COutput>& vAvailableCoins, const CAm
} }
setPresetCoins.insert(coin); setPresetCoins.insert(coin);
} else { } else {
bnb_used = false;
return false; // TODO: Allow non-wallet inputs return false; // TODO: Allow non-wallet inputs
} }
} }
@ -2678,7 +2675,7 @@ bool CWallet::CreateTransaction(interfaces::Chain::Lock& locked_chain, const std
} }
// Choose coins to use // Choose coins to use
bool bnb_used; bool bnb_used = false;
if (pick_new_inputs) { if (pick_new_inputs) {
nValueIn = 0; nValueIn = 0;
setCoins.clear(); setCoins.clear();