Permalink
Browse files

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

  • Loading branch information...
1 parent ae479bc commit 18476423fba5d2cadd2b0973e425a6ebedeb66a4 @instagibbs instagibbs committed with jonasschnelli Apr 28, 2017
Showing with 8 additions and 2 deletions.
  1. +5 −0 qa/rpc-tests/fundrawtransaction.py
  2. +3 −2 src/wallet/wallet.cpp
@@ -54,6 +54,11 @@ def run_test(self):
self.nodes[0].generate(121)
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_pubkey = self.nodes[0].validateaddress(watchonly_address)["pubkey"]
watchonly_amount = Decimal(200)
View
@@ -2587,9 +2587,10 @@ bool CWallet::CreateTransaction(const vector<CRecipient>& vecSend, CWalletTx& wt
vector<CTxOut>::iterator position = txNew.vout.begin()+nChangePosInOut;
txNew.vout.insert(position, newTxOut);
}
- }
- else
+ } else {
reservekey.ReturnKey();
+ nChangePosInOut = -1;
+ }
// Fill vin
//

0 comments on commit 1847642

Please sign in to comment.