aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcoFalke <falke.marco@gmail.com>2020-07-19 20:53:08 +0200
committerMarcoFalke <falke.marco@gmail.com>2020-07-19 20:51:06 +0200
commitfa2ae0ac8d43086430a29c73940ad6b1cd129e96 (patch)
treec35d078d3544cb8b66b23353bd93e38744e6b2b9
parentfa8a99258947a9ee3749fa472180542920cd471c (diff)
downloadbitcoin-fa2ae0ac8d43086430a29c73940ad6b1cd129e96.tar.xz
span: Add Span::empty() and use it in script/descriptor
-rw-r--r--src/script/descriptor.cpp6
-rw-r--r--src/span.h1
2 files changed, 4 insertions, 3 deletions
diff --git a/src/script/descriptor.cpp b/src/script/descriptor.cpp
index 6c5961f60e..9978d084d5 100644
--- a/src/script/descriptor.cpp
+++ b/src/script/descriptor.cpp
@@ -825,9 +825,9 @@ std::unique_ptr<PubkeyProvider> ParsePubkey(uint32_t key_exp_index, const Span<c
return nullptr;
}
if (origin_split.size() == 1) return ParsePubkeyInner(key_exp_index, origin_split[0], permit_uncompressed, out, error);
- if (origin_split[0].size() < 1 || origin_split[0][0] != '[') {
+ if (origin_split[0].empty() || origin_split[0][0] != '[') {
error = strprintf("Key origin start '[ character expected but not found, got '%c' instead",
- origin_split[0].size() < 1 ? /** empty, implies split char */ ']' : origin_split[0][0]);
+ origin_split[0].empty() ? /** empty, implies split char */ ']' : origin_split[0][0]);
return nullptr;
}
auto slash_split = Split(origin_split[0].subspan(1), '/');
@@ -897,7 +897,7 @@ std::unique_ptr<DescriptorImpl> ParseScript(uint32_t key_exp_index, Span<const c
providers.emplace_back(std::move(pk));
key_exp_index++;
}
- if (providers.size() < 1 || providers.size() > 16) {
+ if (providers.empty() || providers.size() > 16) {
error = strprintf("Cannot have %u keys in multisig; must have between 1 and 16 keys, inclusive", providers.size());
return nullptr;
} else if (thres < 1) {
diff --git a/src/span.h b/src/span.h
index 841f1eadf7..79f13c9203 100644
--- a/src/span.h
+++ b/src/span.h
@@ -151,6 +151,7 @@ public:
return m_data[m_size - 1];
}
constexpr std::size_t size() const noexcept { return m_size; }
+ constexpr bool empty() const noexcept { return size() == 0; }
CONSTEXPR_IF_NOT_DEBUG C& operator[](std::size_t pos) const noexcept
{
ASSERT_IF_DEBUG(size() > pos);