re2-msan.patch revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
1diff --git a/third_party/re2/util/sparse_array.h b/third_party/re2/util/sparse_array.h
2index 3e33f89..4ee5c94 100644
3--- a/third_party/re2/util/sparse_array.h
4+++ b/third_party/re2/util/sparse_array.h
5@@ -231,7 +231,8 @@ class SparseArray {
6 
7 template<typename Value>
8 SparseArray<Value>::SparseArray()
9-    : size_(0), max_size_(0), sparse_to_dense_(NULL), dense_(), valgrind_(RunningOnValgrind()) {}
10+    : size_(0), max_size_(0), sparse_to_dense_(NULL), dense_(),
11+      valgrind_(RunningOnValgrindOrMemorySanitizer()) {}
12 
13 // IndexValue pairs: exposed in SparseArray::iterator.
14 template<typename Value>
15@@ -418,7 +419,7 @@ void SparseArray<Value>::create_index(int i) {
16 template<typename Value> SparseArray<Value>::SparseArray(int max_size) {
17   max_size_ = max_size;
18   sparse_to_dense_ = new int[max_size];
19-  valgrind_ = RunningOnValgrind();
20+  valgrind_ = RunningOnValgrindOrMemorySanitizer();
21   dense_.resize(max_size);
22   // Don't need to zero the new memory, but appease Valgrind.
23   if (valgrind_) {
24diff --git a/third_party/re2/util/sparse_set.h b/third_party/re2/util/sparse_set.h
25index 165dd09..4a324d7 100644
26--- a/third_party/re2/util/sparse_set.h
27+++ b/third_party/re2/util/sparse_set.h
28@@ -54,13 +54,14 @@ namespace re2 {
29 class SparseSet {
30  public:
31   SparseSet()
32-    : size_(0), max_size_(0), sparse_to_dense_(NULL), dense_(NULL), valgrind_(RunningOnValgrind()) {}
33+    : size_(0), max_size_(0), sparse_to_dense_(NULL), dense_(NULL),
34+      valgrind_(RunningOnValgrindOrMemorySanitizer()) {}
35 
36   SparseSet(int max_size) {
37     max_size_ = max_size;
38     sparse_to_dense_ = new int[max_size];
39     dense_ = new int[max_size];
40-    valgrind_ = RunningOnValgrind();
41+    valgrind_ = RunningOnValgrindOrMemorySanitizer();
42     // Don't need to zero the memory, but do so anyway
43     // to appease Valgrind.
44     if (valgrind_) {
45diff --git a/third_party/re2/util/util.h b/third_party/re2/util/util.h
46index de1ef5b..49159c2 100644
47--- a/third_party/re2/util/util.h
48+++ b/third_party/re2/util/util.h
49@@ -129,6 +129,14 @@ static inline uint64 Hash64StringWithSeed(const char* s, int len, uint32 seed) {
50   return ((uint64)x << 32) | y;
51 }
52 
53+inline bool RunningOnValgrindOrMemorySanitizer() {
54+#if defined(MEMORY_SANITIZER)
55+  return true;
56+#else
57+  return RunningOnValgrind();
58+#endif
59+}
60+
61 }  // namespace re2
62 
63 #include "util/arena.h"
64