Index: base/win/scoped_handle.cc |
diff --git a/base/win/scoped_handle.cc b/base/win/scoped_handle.cc |
index 6d152aec4141be25af2f6b3d1ee70b24e9d45a64..47ab8542de3b5affdb05e50669fa1c807987aec7 100644 |
--- a/base/win/scoped_handle.cc |
+++ b/base/win/scoped_handle.cc |
@@ -11,7 +11,6 @@ |
#include "base/debug/alias.h" |
#include "base/debug/stack_trace.h" |
#include "base/hash.h" |
-#include "base/lazy_instance.h" |
#include "base/logging.h" |
#include "base/macros.h" |
#include "base/synchronization/lock_impl.h" |
@@ -43,10 +42,13 @@ struct Info { |
}; |
typedef std::unordered_map<HANDLE, Info, HandleHash> HandleMap; |
-// g_lock protects the handle map and setting g_active_verifier within this |
+// GetLock() protects the handle map and setting g_active_verifier within this |
// module. |
typedef base::internal::LockImpl NativeLock; |
-base::LazyInstance<NativeLock>::Leaky g_lock = LAZY_INSTANCE_INITIALIZER; |
+NativeLock* GetLock() { |
+ static auto native_lock = new NativeLock(); |
+ return native_lock; |
+} |
// Simple automatic locking using a native critical section so it supports |
// recursive locking. |
@@ -70,9 +72,7 @@ class AutoNativeLock { |
// way to delete this object from the wrong side of it (or any side, actually). |
class ActiveVerifier { |
public: |
- explicit ActiveVerifier(bool enabled) |
- : enabled_(enabled), lock_(g_lock.Pointer()) { |
- } |
+ explicit ActiveVerifier(bool enabled) : enabled_(enabled), lock_(GetLock()) {} |
// Retrieves the current verifier. |
static ActiveVerifier* Get(); |
@@ -117,11 +117,11 @@ bool CloseHandleWrapper(HANDLE handle) { |
return true; |
} |
-// Assigns the g_active_verifier global within the g_lock lock. |
+// Assigns the g_active_verifier global within the GetLock() lock. |
// If |existing_verifier| is non-null then |enabled| is ignored. |
void ThreadSafeAssignOrCreateActiveVerifier(ActiveVerifier* existing_verifier, |
bool enabled) { |
- AutoNativeLock lock(g_lock.Get()); |
+ AutoNativeLock lock(*GetLock()); |
// Another thread in this module might be trying to assign the global |
// verifier, so check that within the lock here. |
if (g_active_verifier) |