Browse Source

Merge pull request #5924

835c122 Clean up change computation in CreateTransaction. (Daniel Kraft)
0.13
Wladimir J. van der Laan 9 years ago
parent
commit
12a7712abd
No known key found for this signature in database
GPG Key ID: 74810B012346C9A6
  1. 11
      src/wallet/wallet.cpp

11
src/wallet/wallet.cpp

@ -1852,9 +1852,9 @@ bool CWallet::CreateTransaction(const vector<CRecipient>& vecSend, CWalletTx& wt
nChangePosRet = -1; nChangePosRet = -1;
bool fFirst = true; bool fFirst = true;
CAmount nTotalValue = nValue; CAmount nValueToSelect = nValue;
if (nSubtractFeeFromAmount == 0) if (nSubtractFeeFromAmount == 0)
nTotalValue += nFeeRet; nValueToSelect += nFeeRet;
double dPriority = 0; double dPriority = 0;
// vouts to the payees // vouts to the payees
BOOST_FOREACH (const CRecipient& recipient, vecSend) BOOST_FOREACH (const CRecipient& recipient, vecSend)
@ -1891,7 +1891,7 @@ bool CWallet::CreateTransaction(const vector<CRecipient>& vecSend, CWalletTx& wt
// Choose coins to use // Choose coins to use
set<pair<const CWalletTx*,unsigned int> > setCoins; set<pair<const CWalletTx*,unsigned int> > setCoins;
CAmount nValueIn = 0; CAmount nValueIn = 0;
if (!SelectCoins(nTotalValue, setCoins, nValueIn, coinControl)) if (!SelectCoins(nValueToSelect, setCoins, nValueIn, coinControl))
{ {
strFailReason = _("Insufficient funds"); strFailReason = _("Insufficient funds");
return false; return false;
@ -1909,10 +1909,7 @@ bool CWallet::CreateTransaction(const vector<CRecipient>& vecSend, CWalletTx& wt
dPriority += (double)nCredit * age; dPriority += (double)nCredit * age;
} }
CAmount nChange = nValueIn - nValue; const CAmount nChange = nValueIn - nValueToSelect;
if (nSubtractFeeFromAmount == 0)
nChange -= nFeeRet;
if (nChange > 0) if (nChange > 0)
{ {
// Fill a vout to ourself // Fill a vout to ourself

Loading…
Cancel
Save