Commit d3614de6 by Abseil Team Committed by Gennadiy Rozental

Export of internal Abseil changes

--
1829e203300191671abd4b478ca189019e6f88b1 by Abseil Team <absl-team@google.com>:

Don't return true from Demangle() when we didn't actually produce demangled output.

PiperOrigin-RevId: 332544020

--
239b617bd8322cfda69d0dcdd3d78499ed61206d by Abseil Team <absl-team@google.com>:

Minor documentation fix.

PiperOrigin-RevId: 332517877

--
d566c156619bbdceaf6e84bd0d3aa575d5e790f8 by Gennadiy Rozental <rogeeff@google.com>:

Added missing asserts for seq.index() < capacity_ and unified their usage based on has_element().

Import of https://github.com/abseil/abseil-cpp/pull/781

PiperOrigin-RevId: 332229369
GitOrigin-RevId: 1829e203300191671abd4b478ca189019e6f88b1
Change-Id: I5bb1f713497fef54a7abaf2020be91cb32e87b93
parent 20feb1cd
...@@ -1327,6 +1327,7 @@ class raw_hash_set { ...@@ -1327,6 +1327,7 @@ class raw_hash_set {
} }
if (ABSL_PREDICT_TRUE(g.MatchEmpty())) return end(); if (ABSL_PREDICT_TRUE(g.MatchEmpty())) return end();
seq.next(); seq.next();
assert(seq.index() < capacity_ && "full table!");
} }
} }
template <class K = key_type> template <class K = key_type>
...@@ -1678,8 +1679,8 @@ class raw_hash_set { ...@@ -1678,8 +1679,8 @@ class raw_hash_set {
#endif #endif
return {seq.offset(mask.LowestBitSet()), seq.index()}; return {seq.offset(mask.LowestBitSet()), seq.index()};
} }
assert(seq.index() < capacity_ && "full table!");
seq.next(); seq.next();
assert(seq.index() < capacity_ && "full table!");
} }
} }
...@@ -1710,6 +1711,7 @@ class raw_hash_set { ...@@ -1710,6 +1711,7 @@ class raw_hash_set {
} }
if (ABSL_PREDICT_TRUE(g.MatchEmpty())) break; if (ABSL_PREDICT_TRUE(g.MatchEmpty())) break;
seq.next(); seq.next();
assert(seq.index() < capacity_ && "full table!");
} }
return {prepare_insert(hash), true}; return {prepare_insert(hash), true};
} }
......
...@@ -1936,7 +1936,8 @@ static bool Overflowed(const State *state) { ...@@ -1936,7 +1936,8 @@ static bool Overflowed(const State *state) {
bool Demangle(const char *mangled, char *out, int out_size) { bool Demangle(const char *mangled, char *out, int out_size) {
State state; State state;
InitState(&state, mangled, out, out_size); InitState(&state, mangled, out, out_size);
return ParseTopLevelMangledName(&state) && !Overflowed(&state); return ParseTopLevelMangledName(&state) && !Overflowed(&state) &&
state.parse_state.out_cur_idx > 0;
} }
} // namespace debugging_internal } // namespace debugging_internal
......
...@@ -365,8 +365,8 @@ class ABSL_MUST_USE_RESULT Status final { ...@@ -365,8 +365,8 @@ class ABSL_MUST_USE_RESULT Status final {
// Constructors // Constructors
// This default constructor creates an OK status with no message or payload. // This default constructor creates an OK status with no message or payload.
// Avoid this constructor and pefer explicit construction of an OK status with // Avoid this constructor and prefer explicit construction of an OK status
// `absl::OkStatus()`. // with `absl::OkStatus()`.
Status(); Status();
// Creates a status in the canonical error space with the specified // Creates a status in the canonical error space with the specified
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment