[Wallet] unset change position when there is no change on exact match
This commit is contained in:
parent
4c924011f5
commit
7c588637d4
2 changed files with 8 additions and 2 deletions
|
@ -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
|
||||
//
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue