Permalink
Browse files
[Wallet] unset change position when there is no change on exact match
- Loading branch information...
Showing
with
8 additions
and
2 deletions.
-
+5
−0
qa/rpc-tests/fundrawtransaction.py
-
+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)
|
|
|
|
|
|
@@ -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