diff options
| author | Wladimir J. van der Laan <[email protected]> | 2017-05-01 15:19:47 +0200 |
|---|---|---|
| committer | Wladimir J. van der Laan <[email protected]> | 2017-05-01 15:20:51 +0200 |
| commit | e2b99b13131b5d0fd6fae6d55892c2ebb327d438 (patch) | |
| tree | b24f6f50bba69d6373ca0f62567d0d6b69136f6d | |
| parent | Merge #10264: [test] Add tests for getconnectioncount, getnettotals and ping (diff) | |
| parent | [Wallet] unset change position when there is no change on exact match (diff) | |
| download | discoin-e2b99b13131b5d0fd6fae6d55892c2ebb327d438.tar.xz discoin-e2b99b13131b5d0fd6fae6d55892c2ebb327d438.zip | |
Merge #10294: [Wallet] unset change position when there is no change
7c58863 [Wallet] unset change position when there is no change on exact match (Gregory Sanders)
Tree-SHA512: ce8b9337e4132e32d80f954258d50938052c833a48e39431649d6adb16e3d18626a0ae5d300827e7fa397927fba72a1f066cb31af9b0a3ef7f1feb6024461626
| -rw-r--r-- | src/wallet/wallet.cpp | 5 | ||||
| -rwxr-xr-x | test/functional/fundrawtransaction.py | 5 |
2 files changed, 8 insertions, 2 deletions
diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp index e53ac21c9..d85eedf75 100644 --- a/src/wallet/wallet.cpp +++ b/src/wallet/wallet.cpp @@ -2563,9 +2563,10 @@ bool CWallet::CreateTransaction(const std::vector<CRecipient>& vecSend, CWalletT std::vector<CTxOut>::iterator position = txNew.vout.begin()+nChangePosInOut; txNew.vout.insert(position, newTxOut); } - } - else + } else { reservekey.ReturnKey(); + nChangePosInOut = -1; + } // Fill vin // diff --git a/test/functional/fundrawtransaction.py b/test/functional/fundrawtransaction.py index b86ea2d87..e0ca94a6b 100755 --- a/test/functional/fundrawtransaction.py +++ b/test/functional/fundrawtransaction.py @@ -53,6 +53,11 @@ class RawTransactionsTest(BitcoinTestFramework): 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) |