aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPieter Wuille <pieter.wuille@gmail.com>2018-08-08 14:27:20 -0700
committerPieter Wuille <pieter.wuille@gmail.com>2018-08-13 08:21:16 -0700
commitc05712cb590c8c76729a71d75a290c67ae9e3c06 (patch)
tree821f2dd1d1262175850287eaa36096e1cf99b81d /src
parentf87d0a9d75b366445f880041c56c725f8196364e (diff)
downloadbitcoin-c05712cb590c8c76729a71d75a290c67ae9e3c06.tar.xz
Only wipe wrong UTXO type data if overwritten by wallet
Diffstat (limited to 'src')
-rw-r--r--src/wallet/rpcwallet.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/wallet/rpcwallet.cpp b/src/wallet/rpcwallet.cpp
index a766874f12..4aed097364 100644
--- a/src/wallet/rpcwallet.cpp
+++ b/src/wallet/rpcwallet.cpp
@@ -4504,10 +4504,11 @@ bool FillPSBT(const CWallet* pwallet, PartiallySignedTransaction& psbtx, const C
// If we don't know about this input, skip it and let someone else deal with it
const uint256& txhash = txin.prevout.hash;
- const auto& it = pwallet->mapWallet.find(txhash);
+ const auto it = pwallet->mapWallet.find(txhash);
if (it != pwallet->mapWallet.end()) {
const CWalletTx& wtx = it->second;
CTxOut utxo = wtx.tx->vout[txin.prevout.n];
+ // Update both UTXOs from the wallet.
input.non_witness_utxo = wtx.tx;
input.witness_utxo = utxo;
}
@@ -4524,11 +4525,13 @@ bool FillPSBT(const CWallet* pwallet, PartiallySignedTransaction& psbtx, const C
complete &= SignPSBTInput(PublicOnlySigningProvider(pwallet), *psbtx.tx, input, sigdata, i, sighash_type);
}
- // Drop the unnecessary UTXO
- if (sigdata.witness) {
- input.non_witness_utxo = nullptr;
- } else {
- input.witness_utxo.SetNull();
+ if (it != pwallet->mapWallet.end()) {
+ // Drop the unnecessary UTXO if we added both from the wallet.
+ if (sigdata.witness) {
+ input.non_witness_utxo = nullptr;
+ } else {
+ input.witness_utxo.SetNull();
+ }
}
// Get public key paths