| diff --git a/third_party/re2/util/sparse_array.h b/third_party/re2/util/sparse_array.h |
| index 3e33f89..4ee5c94 100644 |
| --- a/third_party/re2/util/sparse_array.h |
| +++ b/third_party/re2/util/sparse_array.h |
| @@ -231,7 +231,8 @@ class SparseArray { |
| |
| template<typename Value> |
| SparseArray<Value>::SparseArray() |
| - : size_(0), max_size_(0), sparse_to_dense_(NULL), dense_(), valgrind_(RunningOnValgrind()) {} |
| + : size_(0), max_size_(0), sparse_to_dense_(NULL), dense_(), |
| + valgrind_(RunningOnValgrindOrMemorySanitizer()) {} |
| |
| // IndexValue pairs: exposed in SparseArray::iterator. |
| template<typename Value> |
| @@ -418,7 +419,7 @@ void SparseArray<Value>::create_index(int i) { |
| template<typename Value> SparseArray<Value>::SparseArray(int max_size) { |
| max_size_ = max_size; |
| sparse_to_dense_ = new int[max_size]; |
| - valgrind_ = RunningOnValgrind(); |
| + valgrind_ = RunningOnValgrindOrMemorySanitizer(); |
| dense_.resize(max_size); |
| // Don't need to zero the new memory, but appease Valgrind. |
| if (valgrind_) { |
| diff --git a/third_party/re2/util/sparse_set.h b/third_party/re2/util/sparse_set.h |
| index 165dd09..4a324d7 100644 |
| --- a/third_party/re2/util/sparse_set.h |
| +++ b/third_party/re2/util/sparse_set.h |
| @@ -54,13 +54,14 @@ namespace re2 { |
| class SparseSet { |
| public: |
| SparseSet() |
| - : size_(0), max_size_(0), sparse_to_dense_(NULL), dense_(NULL), valgrind_(RunningOnValgrind()) {} |
| + : size_(0), max_size_(0), sparse_to_dense_(NULL), dense_(NULL), |
| + valgrind_(RunningOnValgrindOrMemorySanitizer()) {} |
| |
| SparseSet(int max_size) { |
| max_size_ = max_size; |
| sparse_to_dense_ = new int[max_size]; |
| dense_ = new int[max_size]; |
| - valgrind_ = RunningOnValgrind(); |
| + valgrind_ = RunningOnValgrindOrMemorySanitizer(); |
| // Don't need to zero the memory, but do so anyway |
| // to appease Valgrind. |
| if (valgrind_) { |
| diff --git a/third_party/re2/util/util.h b/third_party/re2/util/util.h |
| index de1ef5b..49159c2 100644 |
| --- a/third_party/re2/util/util.h |
| +++ b/third_party/re2/util/util.h |
| @@ -129,6 +129,14 @@ static inline uint64 Hash64StringWithSeed(const char* s, int len, uint32 seed) { |
| return ((uint64)x << 32) | y; |
| } |
| |
| +inline bool RunningOnValgrindOrMemorySanitizer() { |
| +#if defined(MEMORY_SANITIZER) |
| + return true; |
| +#else |
| + return RunningOnValgrind(); |
| +#endif |
| +} |
| + |
| } // namespace re2 |
| |
| #include "util/arena.h" |