about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAbseil Team <absl-team@google.com>2019-01-17T17·48-0800
committerAlex Strelnikov <strel@google.com>2019-01-17T19·35-0500
commitefccc502606bed768e50a6cd5806d8eb13e4e935 (patch)
treecfeef235fa41c767f5570453ef86509fdc823aac
parent5e6a78131f7bd5940218462c07d88cdefdd75dbe (diff)
Export of internal Abseil changes.
--
b7d4f72ebb8a052cb2c6dfbfb628200eb64585c5 by CJ Johnson <johnsoncj@google.com>:

`Hash` -> `H` for AbslHashValue in InlinedVector

PiperOrigin-RevId: 229765535

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

fix ubsan error in Mutex on arm32

PiperOrigin-RevId: 229744897
GitOrigin-RevId: b7d4f72ebb8a052cb2c6dfbfb628200eb64585c5
Change-Id: Ic0fd2252f9838d5fceffc808d05a09a8bc872efc
-rw-r--r--absl/container/inlined_vector.h14
-rw-r--r--absl/synchronization/mutex.cc2
2 files changed, 8 insertions, 8 deletions
diff --git a/absl/container/inlined_vector.h b/absl/container/inlined_vector.h
index 4849f7eaddaf..649e904a9704 100644
--- a/absl/container/inlined_vector.h
+++ b/absl/container/inlined_vector.h
@@ -808,8 +808,8 @@ class InlinedVector {
   }
 
  private:
-  template <typename Hash, typename TheT, size_t TheN, typename TheA>
-  friend Hash AbslHashValue(Hash, const InlinedVector<TheT, TheN, TheA>& vec);
+  template <typename H, typename TheT, size_t TheN, typename TheA>
+  friend H AbslHashValue(H, const InlinedVector<TheT, TheN, TheA>& vector);
 
   // Holds whether the vector is allocated or not in the lowest bit and the size
   // in the high bits:
@@ -1358,11 +1358,11 @@ bool operator>=(const InlinedVector<T, N, A>& a,
 //
 // Provides `absl::Hash` support for inlined vectors. You do not normally call
 // this function directly.
-template <typename Hash, typename TheT, size_t TheN, typename TheA>
-Hash AbslHashValue(Hash hash, const InlinedVector<TheT, TheN, TheA>& vec) {
-  auto p = vec.data();
-  auto n = vec.size();
-  return Hash::combine(Hash::combine_contiguous(std::move(hash), p, n), n);
+template <typename H, typename TheT, size_t TheN, typename TheA>
+H AbslHashValue(H hash, const InlinedVector<TheT, TheN, TheA>& vector) {
+  auto p = vector.data();
+  auto n = vector.size();
+  return H::combine(H::combine_contiguous(std::move(hash), p, n), n);
 }
 
 // -----------------------------------------------------------------------------
diff --git a/absl/synchronization/mutex.cc b/absl/synchronization/mutex.cc
index f1b42db15f99..40ab7d22f4bc 100644
--- a/absl/synchronization/mutex.cc
+++ b/absl/synchronization/mutex.cc
@@ -1841,7 +1841,7 @@ static void CheckForMutexCorruption(intptr_t v, const char* label) {
   // Test for either of two situations that should not occur in v:
   //   kMuWriter and kMuReader
   //   kMuWrWait and !kMuWait
-  const intptr_t w = v ^ kMuWait;
+  const uintptr_t w = v ^ kMuWait;
   // By flipping that bit, we can now test for:
   //   kMuWriter and kMuReader in w
   //   kMuWrWait and kMuWait in w