Skip to content

Commit 1db23da

Browse files
committed
wallet: Use std::optional for GetExternalOutput and fixups
1 parent becc45b commit 1db23da

File tree

2 files changed

+16
-17
lines changed

2 files changed

+16
-17
lines changed

src/wallet/coincontrol.h

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
#include <script/signingprovider.h>
1414
#include <script/standard.h>
1515

16-
#include <optional>
1716
#include <algorithm>
1817
#include <map>
18+
#include <optional>
1919
#include <set>
2020

2121
namespace wallet {
@@ -65,27 +65,27 @@ class CCoinControl
6565

6666
bool HasSelected() const
6767
{
68-
return (m_selected_inputs.size() > 0);
68+
return !m_selected_inputs.empty();
6969
}
7070

7171
bool IsSelected(const COutPoint& output) const
7272
{
73-
return (m_selected_inputs.count(output) > 0);
73+
return m_selected_inputs.count(output) > 0;
7474
}
7575

7676
bool IsExternalSelected(const COutPoint& output) const
7777
{
78-
return (m_external_txouts.count(output) > 0);
78+
return m_external_txouts.count(output) > 0;
7979
}
8080

81-
bool GetExternalOutput(const COutPoint& outpoint, CTxOut& txout) const
81+
std::optional<CTxOut> GetExternalOutput(const COutPoint& outpoint) const
8282
{
8383
const auto ext_it = m_external_txouts.find(outpoint);
8484
if (ext_it == m_external_txouts.end()) {
85-
return false;
85+
return std::nullopt;
8686
}
87-
txout = ext_it->second;
88-
return true;
87+
88+
return std::make_optional(ext_it->second);
8989
}
9090

9191
void Select(const COutPoint& output)

src/wallet/spend.cpp

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,7 @@ int CalculateMaximumSignedInputSize(const CTxOut& txout, const CWallet* wallet,
5252
TxSize CalculateMaximumSignedTxSize(const CTransaction &tx, const CWallet *wallet, const std::vector<CTxOut>& txouts, const CCoinControl* coin_control)
5353
{
5454
CMutableTransaction txNew(tx);
55-
if (!wallet->DummySignTx(txNew, txouts, coin_control)) {
56-
return TxSize{-1, -1};
57-
}
55+
if (!wallet->DummySignTx(txNew, txouts, coin_control)) return TxSize{-1, -1};
5856
CTransaction ctx(txNew);
5957
int64_t vsize = GetVirtualTransactionSize(ctx);
6058
int64_t weight = GetTransactionWeight(ctx);
@@ -72,11 +70,9 @@ TxSize CalculateMaximumSignedTxSize(const CTransaction &tx, const CWallet *walle
7270
assert(input.prevout.n < mi->second.tx->vout.size());
7371
txouts.emplace_back(mi->second.tx->vout.at(input.prevout.n));
7472
} else if (coin_control) {
75-
CTxOut txout;
76-
if (!coin_control->GetExternalOutput(input.prevout, txout)) {
77-
return TxSize{-1, -1};
78-
}
79-
txouts.emplace_back(txout);
73+
const auto& txout{coin_control->GetExternalOutput(input.prevout)};
74+
if (!txout) return TxSize{-1, -1};
75+
txouts.emplace_back(*txout);
8076
} else {
8177
return TxSize{-1, -1};
8278
}
@@ -178,9 +174,12 @@ util::Result<PreSelectedInputs> FetchSelectedInputs(const CWallet& wallet, const
178174
input_bytes = CalculateMaximumSignedInputSize(txout, &wallet, &coin_control);
179175
} else {
180176
// The input is external. We did not find the tx in mapWallet.
181-
if (!coin_control.GetExternalOutput(outpoint, txout)) {
177+
const auto out{coin_control.GetExternalOutput(outpoint)};
178+
if (!out) {
182179
return util::Error{strprintf(_("Not found pre-selected input %s"), outpoint.ToString())};
183180
}
181+
182+
txout = *out;
184183
}
185184

186185
if (input_bytes == -1) {

0 commit comments

Comments
 (0)