|
|
@ -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
|
|
|
|