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