| Index: base/time/time_posix.cc
|
| diff --git a/base/time/time_posix.cc b/base/time/time_posix.cc
|
| index 963c15b6536fa52b46b2dd903d21fa264c10ca3f..ada2058563f2e3f51b8527bf46bbb1490c31bc8a 100644
|
| --- a/base/time/time_posix.cc
|
| +++ b/base/time/time_posix.cc
|
| @@ -26,7 +26,6 @@
|
| #endif
|
|
|
| #if !defined(OS_MACOSX)
|
| -#include "base/lazy_instance.h"
|
| #include "base/synchronization/lock.h"
|
| #endif
|
|
|
| @@ -35,8 +34,10 @@ namespace {
|
| #if !defined(OS_MACOSX)
|
| // This prevents a crash on traversing the environment global and looking up
|
| // the 'TZ' variable in libc. See: crbug.com/390567.
|
| -base::LazyInstance<base::Lock>::Leaky
|
| - g_sys_time_to_time_struct_lock = LAZY_INSTANCE_INITIALIZER;
|
| +base::Lock* GetSysTimeToTimeStructLock() {
|
| + static auto lock = new base::Lock();
|
| + return lock;
|
| +}
|
|
|
| // Define a system-specific SysTime that wraps either to a time_t or
|
| // a time64_t depending on the host system, and associated convertion.
|
| @@ -45,7 +46,7 @@ base::LazyInstance<base::Lock>::Leaky
|
| typedef time64_t SysTime;
|
|
|
| SysTime SysTimeFromTimeStruct(struct tm* timestruct, bool is_local) {
|
| - base::AutoLock locked(g_sys_time_to_time_struct_lock.Get());
|
| + base::AutoLock locked(*GetSysTimeToTimeStructLock());
|
| if (is_local)
|
| return mktime64(timestruct);
|
| else
|
| @@ -53,7 +54,7 @@ SysTime SysTimeFromTimeStruct(struct tm* timestruct, bool is_local) {
|
| }
|
|
|
| void SysTimeToTimeStruct(SysTime t, struct tm* timestruct, bool is_local) {
|
| - base::AutoLock locked(g_sys_time_to_time_struct_lock.Get());
|
| + base::AutoLock locked(*GetSysTimeToTimeStructLock());
|
| if (is_local)
|
| localtime64_r(&t, timestruct);
|
| else
|
| @@ -64,7 +65,7 @@ void SysTimeToTimeStruct(SysTime t, struct tm* timestruct, bool is_local) {
|
| typedef time_t SysTime;
|
|
|
| SysTime SysTimeFromTimeStruct(struct tm* timestruct, bool is_local) {
|
| - base::AutoLock locked(g_sys_time_to_time_struct_lock.Get());
|
| + base::AutoLock locked(*GetSysTimeToTimeStructLock());
|
| if (is_local)
|
| return mktime(timestruct);
|
| else
|
| @@ -72,7 +73,7 @@ SysTime SysTimeFromTimeStruct(struct tm* timestruct, bool is_local) {
|
| }
|
|
|
| void SysTimeToTimeStruct(SysTime t, struct tm* timestruct, bool is_local) {
|
| - base::AutoLock locked(g_sys_time_to_time_struct_lock.Get());
|
| + base::AutoLock locked(*GetSysTimeToTimeStructLock());
|
| if (is_local)
|
| localtime_r(&t, timestruct);
|
| else
|
|
|