diff --git a/re2/dfa.cc b/re2/dfa.cc index d587a552..338093e7 100644 --- a/re2/dfa.cc +++ b/re2/dfa.cc @@ -1152,24 +1152,24 @@ class DFA::RWLocker { }; DFA::RWLocker::RWLocker(CacheMutex* mu) : mu_(mu), writing_(false) { - mu_->ReaderLock(); + mu_->lock_shared(); } // This function is marked as ABSL_NO_THREAD_SAFETY_ANALYSIS because // the annotations don't support lock upgrade. void DFA::RWLocker::LockForWriting() ABSL_NO_THREAD_SAFETY_ANALYSIS { if (!writing_) { - mu_->ReaderUnlock(); - mu_->WriterLock(); + mu_->unlock_shared(); + mu_->lock(); writing_ = true; } } DFA::RWLocker::~RWLocker() { if (!writing_) - mu_->ReaderUnlock(); + mu_->unlock_shared(); else - mu_->WriterUnlock(); + mu_->unlock(); } diff --git a/re2/regexp.cc b/re2/regexp.cc index f7e5ba29..5a7a9a88 100644 --- a/re2/regexp.cc +++ b/re2/regexp.cc @@ -83,8 +83,8 @@ struct RefStorage { }; alignas(RefStorage) static char ref_storage[sizeof(RefStorage)]; -static inline absl::Mutex* ref_mutex() { - return &reinterpret_cast(ref_storage)->ref_mutex; +static inline absl::Mutex& ref_mutex() { + return reinterpret_cast(ref_storage)->ref_mutex; } static inline absl::flat_hash_map* ref_map() {