diff options
author | W. J. van der Laan <laanwj@protonmail.com> | 2021-08-26 14:07:06 +0200 |
---|---|---|
committer | W. J. van der Laan <laanwj@protonmail.com> | 2021-08-26 14:26:01 +0200 |
commit | 4a25e39624e2d75bac2c65d50d824e6291513824 (patch) | |
tree | 3091f624b2a18108e4fd2529b22696bfc1417d00 /src/deploymentstatus.cpp | |
parent | d3bd5410f64e96d106486643e3d4300a9fb0ee71 (diff) | |
parent | 32e1424f84a30194dc5baa7108cf7d958ea0afcd (diff) | |
download | bitcoin-4a25e39624e2d75bac2c65d50d824e6291513824.tar.xz |
Merge bitcoin/bitcoin#22629: [22.x] rc3 backports
32e1424f84a30194dc5baa7108cf7d958ea0afcd Fix build with Boost 1.77.0 (Rafael Sadowski)
cb34a0aafe21881b45a664432ad404a3dbf2f881 qt: Handle new added plurals in bitcoin_en.ts (Hennadii Stepanov)
068985c02e20b28c717a336e6b226e98060a9a45 doc: Mention the flat directory structure for uploads (Andrew Chow)
27d43e5bd40590d18b4cf88a4e98ddabbc93fb9a guix: Don't include directory name in SHA256SUMS (Andrew Chow)
88fb7e37ad37f2a262c7bf1f35ce77aa57113f32 test: fix bug in 22686 (S3RK)
63fec7e2958cd4349d73faf854e0665e7af30965 clientversion: No suffix #if CLIENT_VERSION_IS_RELEASE (Carl Dong)
dfaffbeb6306be2e3bf447642f271c7fc733ae5e test: Test for ApproximateBestSubset edge case with too little fees (Andrew Chow)
e86b023606193ca044f9ce20c88958d693585734 wallet: Assert that enough was selected to cover the fees (Andrew Chow)
ffc81e2048bc9d3887211174b58f798b981f8c64 wallet: Use GetSelectionAmount for target value calculations (Andrew Chow)
ce77b45a1f4c6ff5bb0a283ffdd0999e734c1fb0 release: Release with separate SHA256SUMS and sig files (Carl Dong)
cb491bd5a717c280e23727a2ca3918d6ff6968b3 guix-verify: Non-zero exit code when anything fails (Carl Dong)
6a611d2e3c3ec703b2a034a3dc5422a6535c648b gui: ensure external signer option remains disabled without signers (Andrew Chow)
e9b44876842df254fb4a2856702b74fe8c01ba6d qt: Fix regression in "Encrypt Wallet" menu item (Hennadii Stepanov)
57fce067a322d4b30ae8516795d5d2a1fe2f9f66 consensus/params: simplify ValidDeployment check to avoid gcc warning (Anthony Towns)
e9d30fbb3a90dfafebdb026a53b4f632614d660e ci: Run fuzzer task for the master branch only (Hennadii Stepanov)
Pull request description:
Backported:
1) #22730
1) https://github.com/bitcoin-core/gui/pull/393
1) #22597
1) https://github.com/bitcoin-core/gui/pull/396
1) #22643
1) #22642
1) #22685
1) #22686
1) #22654
1) #22742
1) https://github.com/bitcoin-core/gui/pull/406
1) #22713
ACKs for top commit:
laanwj:
Code list-of-backported-PRs review ACK 32e1424f84a30194dc5baa7108cf7d958ea0afcd
Tree-SHA512: f5e2dd1be6cdcd39368eeb5d297b3ff4418d0bf2e70c90e59ab4ba1dbf16f773045d877b4997511de58c3aca75a978dcf043e338bad23951557e2a27ccc845f6
Diffstat (limited to 'src/deploymentstatus.cpp')
-rw-r--r-- | src/deploymentstatus.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/deploymentstatus.cpp b/src/deploymentstatus.cpp index 9007800421..bba86639a3 100644 --- a/src/deploymentstatus.cpp +++ b/src/deploymentstatus.cpp @@ -7,6 +7,8 @@ #include <consensus/params.h> #include <versionbits.h> +#include <type_traits> + VersionBitsCache g_versionbitscache; /* Basic sanity checking for BuriedDeployment/DeploymentPos enums and @@ -15,3 +17,18 @@ VersionBitsCache g_versionbitscache; static_assert(ValidDeployment(Consensus::DEPLOYMENT_TESTDUMMY), "sanity check of DeploymentPos failed (TESTDUMMY not valid)"); static_assert(!ValidDeployment(Consensus::MAX_VERSION_BITS_DEPLOYMENTS), "sanity check of DeploymentPos failed (MAX value considered valid)"); static_assert(!ValidDeployment(static_cast<Consensus::BuriedDeployment>(Consensus::DEPLOYMENT_TESTDUMMY)), "sanity check of BuriedDeployment failed (overlaps with DeploymentPos)"); + +/* ValidDeployment only checks upper bounds for ensuring validity. + * This checks that the lowest possible value or the type is also a + * (specific) valid deployment so that lower bounds don't need to be checked. + */ + +template<typename T, T x> +static constexpr bool is_minimum() +{ + using U = typename std::underlying_type<T>::type; + return x == std::numeric_limits<U>::min(); +} + +static_assert(is_minimum<Consensus::BuriedDeployment, Consensus::DEPLOYMENT_HEIGHTINCB>(), "heightincb is not minimum value for BuriedDeployment"); +static_assert(is_minimum<Consensus::DeploymentPos, Consensus::DEPLOYMENT_TESTDUMMY>(), "testdummy is not minimum value for DeploymentPos"); |