summaryrefslogtreecommitdiffstats
path: root/lldb/source/Target/Process.cpp
diff options
context:
space:
mode:
authorGreg Clayton <gclayton@apple.com>2016-02-26 19:38:18 +0000
committerGreg Clayton <gclayton@apple.com>2016-02-26 19:38:18 +0000
commit04df8ee55eb9a04783bc66c44d17ef36097e5a9b (patch)
treeed47519903737767614f9816f254f6c7352eb6fd /lldb/source/Target/Process.cpp
parent65ab102be3dfde9e3239ac9d08efdbcd7041f261 (diff)
downloadbcm5719-llvm-04df8ee55eb9a04783bc66c44d17ef36097e5a9b.tar.gz
bcm5719-llvm-04df8ee55eb9a04783bc66c44d17ef36097e5a9b.zip
Make sure the Target, Process and Thread GetGlobalProperties() static methods are thread safe.
<rdar://problem/22595283> llvm-svn: 262053
Diffstat (limited to 'lldb/source/Target/Process.cpp')
-rw-r--r--lldb/source/Target/Process.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/lldb/source/Target/Process.cpp b/lldb/source/Target/Process.cpp
index 97951f49219..4f4643df892 100644
--- a/lldb/source/Target/Process.cpp
+++ b/lldb/source/Target/Process.cpp
@@ -9,6 +9,7 @@
// C Includes
// C++ Includes
+#include <mutex>
// Other libraries and framework includes
// Project includes
#include "lldb/Target/Process.h"
@@ -832,8 +833,11 @@ const ProcessPropertiesSP &
Process::GetGlobalProperties()
{
static ProcessPropertiesSP g_settings_sp;
- if (!g_settings_sp)
- g_settings_sp.reset (new ProcessProperties (NULL));
+ static std::once_flag g_once_flag;
+ std::call_once(g_once_flag, []() {
+ if (!g_settings_sp)
+ g_settings_sp.reset (new ProcessProperties (NULL));
+ });
return g_settings_sp;
}
OpenPOWER on IntegriCloud