Export of internal Abseil changes
-- 0b924fe4e9871200792617329d32beb8356daa9b by Derek Mauro <dmauro@google.com>: Use less threads in the GetTID() test to avoid test timeouts PiperOrigin-RevId: 292566826 -- 0b519c4fd48d61b7c4ea94ed6a6be6e981b9c51a by Abseil Team <absl-team@google.com>: Internal change. PiperOrigin-RevId: 292563778 -- 3204f6e07bcc2b5e9098d45f1a20998f25ab808e by Abseil Team <absl-team@google.com>: Internal change. PiperOrigin-RevId: 292550551 -- 09fbbe73833478d3f26f3e33c8291b991fd3be51 by Derek Mauro <dmauro@google.com>: Add a debug bounds-check to absl::string_view::operator[] string_view accesses that are out-of-bounds are undefined behavior: https://en.cppreference.com/w/cpp/string/basic_string_view/operator_at This change causes code to abort in debug mode, indicating a bug and possibly a security issue like a buffer overflow. Code broken by this change should be investigated. PiperOrigin-RevId: 292544735 -- bf2c19cb45682628f963d4067c0cd6deed7e656d by Derek Mauro <dmauro@google.com>: Add debug assertions to absl::string_view::front and absl::string_view::back Calling front() or back() on an empty string_view is undefined behavior. This assertion is to help catch broken code. https://en.cppreference.com/w/cpp/string/basic_string_view/front https://en.cppreference.com/w/cpp/string/basic_string_view/back PiperOrigin-RevId: 292453255 -- 47f573679b322f8c0fd2cb037cc87e7bc822ac6b by Xiaoyi Zhang <zhangxy@google.com>: Release functional/CMakeList.txt. PiperOrigin-RevId: 292417025 GitOrigin-RevId: 0b924fe4e9871200792617329d32beb8356daa9b Change-Id: Ie6980fb1ac351d72a2ce4468f25bd31db396f88a
This commit is contained in:
parent
c512f118dd
commit
0f86336b69
8 changed files with 151 additions and 78 deletions
|
|
@ -180,9 +180,7 @@ class base_checker {
|
|||
const_iterator find(const key_type &key) const {
|
||||
return iter_check(tree_.find(key), checker_.find(key));
|
||||
}
|
||||
bool contains(const key_type &key) const {
|
||||
return find(key) != end();
|
||||
}
|
||||
bool contains(const key_type &key) const { return find(key) != end(); }
|
||||
size_type count(const key_type &key) const {
|
||||
size_type res = checker_.count(key);
|
||||
EXPECT_EQ(res, tree_.count(key));
|
||||
|
|
@ -240,8 +238,10 @@ class base_checker {
|
|||
++checker_end;
|
||||
}
|
||||
}
|
||||
checker_.erase(checker_begin, checker_end);
|
||||
tree_.erase(begin, end);
|
||||
const auto checker_ret = checker_.erase(checker_begin, checker_end);
|
||||
const auto tree_ret = tree_.erase(begin, end);
|
||||
EXPECT_EQ(std::distance(checker_.begin(), checker_ret),
|
||||
std::distance(tree_.begin(), tree_ret));
|
||||
EXPECT_EQ(tree_.size(), checker_.size());
|
||||
EXPECT_EQ(tree_.size(), size - count);
|
||||
}
|
||||
|
|
@ -326,7 +326,7 @@ class unique_checker : public base_checker<TreeType, CheckerType> {
|
|||
unique_checker(const unique_checker &x) : super_type(x) {}
|
||||
template <class InputIterator>
|
||||
unique_checker(InputIterator b, InputIterator e) : super_type(b, e) {}
|
||||
unique_checker& operator=(const unique_checker&) = default;
|
||||
unique_checker &operator=(const unique_checker &) = default;
|
||||
|
||||
// Insertion routines.
|
||||
std::pair<iterator, bool> insert(const value_type &x) {
|
||||
|
|
@ -374,7 +374,7 @@ class multi_checker : public base_checker<TreeType, CheckerType> {
|
|||
multi_checker(const multi_checker &x) : super_type(x) {}
|
||||
template <class InputIterator>
|
||||
multi_checker(InputIterator b, InputIterator e) : super_type(b, e) {}
|
||||
multi_checker& operator=(const multi_checker&) = default;
|
||||
multi_checker &operator=(const multi_checker &) = default;
|
||||
|
||||
// Insertion routines.
|
||||
iterator insert(const value_type &x) {
|
||||
|
|
@ -868,7 +868,7 @@ struct CompareIntToString {
|
|||
|
||||
struct NonTransparentCompare {
|
||||
template <typename T, typename U>
|
||||
bool operator()(const T& t, const U& u) const {
|
||||
bool operator()(const T &t, const U &u) const {
|
||||
// Treating all comparators as transparent can cause inefficiencies (see
|
||||
// N3657 C++ proposal). Test that for comparators without 'is_transparent'
|
||||
// alias (like this one), we do not attempt heterogeneous lookup.
|
||||
|
|
@ -1005,21 +1005,15 @@ class StringLike {
|
|||
public:
|
||||
StringLike() = default;
|
||||
|
||||
StringLike(const char* s) : s_(s) { // NOLINT
|
||||
StringLike(const char *s) : s_(s) { // NOLINT
|
||||
++constructor_calls_;
|
||||
}
|
||||
|
||||
bool operator<(const StringLike& a) const {
|
||||
return s_ < a.s_;
|
||||
}
|
||||
bool operator<(const StringLike &a) const { return s_ < a.s_; }
|
||||
|
||||
static void clear_constructor_call_count() {
|
||||
constructor_calls_ = 0;
|
||||
}
|
||||
static void clear_constructor_call_count() { constructor_calls_ = 0; }
|
||||
|
||||
static int constructor_calls() {
|
||||
return constructor_calls_;
|
||||
}
|
||||
static int constructor_calls() { return constructor_calls_; }
|
||||
|
||||
private:
|
||||
static int constructor_calls_;
|
||||
|
|
@ -1476,7 +1470,7 @@ struct NoDefaultCtor {
|
|||
int num;
|
||||
explicit NoDefaultCtor(int i) : num(i) {}
|
||||
|
||||
friend bool operator<(const NoDefaultCtor& a, const NoDefaultCtor& b) {
|
||||
friend bool operator<(const NoDefaultCtor &a, const NoDefaultCtor &b) {
|
||||
return a.num < b.num;
|
||||
}
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue