Browse Source

[Wallet] unset change position when there is no change on exact match

0.14
Gregory Sanders 8 years ago committed by Jonas Schnelli
parent
commit
18476423fb
No known key found for this signature in database
GPG Key ID: 1EB776BB03C7922D
  1. 5
      qa/rpc-tests/fundrawtransaction.py
  2. 5
      src/wallet/wallet.cpp

5
qa/rpc-tests/fundrawtransaction.py

@ -54,6 +54,11 @@ class RawTransactionsTest(BitcoinTestFramework):
self.nodes[0].generate(121) self.nodes[0].generate(121)
self.sync_all() self.sync_all()
# ensure that setting changePosition in fundraw with an exact match is handled properly
rawmatch = self.nodes[2].createrawtransaction([], {self.nodes[2].getnewaddress():50})
rawmatch = self.nodes[2].fundrawtransaction(rawmatch, {"changePosition":1, "subtractFeeFromOutputs":[0]})
assert_equal(rawmatch["changepos"], -1)
watchonly_address = self.nodes[0].getnewaddress() watchonly_address = self.nodes[0].getnewaddress()
watchonly_pubkey = self.nodes[0].validateaddress(watchonly_address)["pubkey"] watchonly_pubkey = self.nodes[0].validateaddress(watchonly_address)["pubkey"]
watchonly_amount = Decimal(200) watchonly_amount = Decimal(200)

5
src/wallet/wallet.cpp

@ -2587,9 +2587,10 @@ bool CWallet::CreateTransaction(const vector<CRecipient>& vecSend, CWalletTx& wt
vector<CTxOut>::iterator position = txNew.vout.begin()+nChangePosInOut; vector<CTxOut>::iterator position = txNew.vout.begin()+nChangePosInOut;
txNew.vout.insert(position, newTxOut); txNew.vout.insert(position, newTxOut);
} }
} } else {
else
reservekey.ReturnKey(); reservekey.ReturnKey();
nChangePosInOut = -1;
}
// Fill vin // Fill vin
// //

Loading…
Cancel
Save