diff options
author | fanquake <fanquake@gmail.com> | 2022-05-27 15:54:21 +0100 |
---|---|---|
committer | fanquake <fanquake@gmail.com> | 2022-05-28 09:43:02 +0100 |
commit | cc61bc2e19b1c8cb32778ef42746d32b02cc2671 (patch) | |
tree | c6ee2e9549c984ade738369ef96f7bb5cc209f2d /src/compat/glibcxx_sanity.cpp | |
parent | ba48fcf4a40c5b9888459511fb4233a1b89184cc (diff) | |
download | bitcoin-cc61bc2e19b1c8cb32778ef42746d32b02cc2671.tar.xz |
compat: remove glibcxx sanity checks
These checks were added in #4339, (see also #4081), to test
our back-compat stubs, however, those stubs no-longer exist (#22930),
meaning that these checks are now just testing some specific standard
library behaviour, without a particular rationale, or reason, compared
to any other standard library functions we use.
There has also been some discussion about the sanity checks in the
context of the libbitcoinkernel refactoring, see
https://github.com/bitcoin/bitcoin/pull/25065#discussion_r880668218.
Removing the checks removes the need to worry about atleast the glibcxx
checks.
Also remove the list of check from the doc in init.h, because it is
incomplete, and anyone who wants to know what checks are included can
look at the function.
Diffstat (limited to 'src/compat/glibcxx_sanity.cpp')
-rw-r--r-- | src/compat/glibcxx_sanity.cpp | 62 |
1 files changed, 0 insertions, 62 deletions
diff --git a/src/compat/glibcxx_sanity.cpp b/src/compat/glibcxx_sanity.cpp deleted file mode 100644 index f2ceeeeb9c..0000000000 --- a/src/compat/glibcxx_sanity.cpp +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright (c) 2009-2018 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#include <list> -#include <locale> -#include <stdexcept> -#include <string> - -namespace -{ -// trigger: use ctype<char>::widen to trigger ctype<char>::_M_widen_init(). -// test: convert a char from narrow to wide and back. Verify that the result -// matches the original. -bool sanity_test_widen(char testchar) -{ - const std::ctype<char>& test(std::use_facet<std::ctype<char> >(std::locale())); - return test.narrow(test.widen(testchar), 'b') == testchar; -} - -// trigger: use list::push_back and list::pop_back to trigger _M_hook and -// _M_unhook. -// test: Push a sequence of integers into a list. Pop them off and verify that -// they match the original sequence. -bool sanity_test_list(unsigned int size) -{ - std::list<unsigned int> test; - for (unsigned int i = 0; i != size; ++i) - test.push_back(i + 1); - - if (test.size() != size) - return false; - - while (!test.empty()) { - if (test.back() != test.size()) - return false; - test.pop_back(); - } - return true; -} - -} // namespace - -// trigger: string::at(x) on an empty string to trigger __throw_out_of_range_fmt. -// test: force std::string to throw an out_of_range exception. Verify that -// it's caught correctly. -bool sanity_test_range_fmt() -{ - std::string test; - try { - test.at(1); - } catch (const std::out_of_range&) { - return true; - } catch (...) { - } - return false; -} - -bool glibcxx_sanity_test() -{ - return sanity_test_widen('a') && sanity_test_list(100) && sanity_test_range_fmt(); -} |