summaryrefslogtreecommitdiff
path: root/lib/Support/Windows/DynamicLibrary.inc
diff options
context:
space:
mode:
authorJordy Rose <jediknil@belkadan.com>2011-08-22 19:01:52 +0000
committerJordy Rose <jediknil@belkadan.com>2011-08-22 19:01:52 +0000
commiteeb37f1a568185c46f600fb34769ec376bf5bfaf (patch)
tree10232a1eb6e6237bb70acb2627d8d1a4e227f7b3 /lib/Support/Windows/DynamicLibrary.inc
parent11e03e7c2d0c163e54b911ad1e665616dc0bcc8c (diff)
downloadllvm-eeb37f1a568185c46f600fb34769ec376bf5bfaf.tar.gz
llvm-eeb37f1a568185c46f600fb34769ec376bf5bfaf.tar.bz2
llvm-eeb37f1a568185c46f600fb34769ec376bf5bfaf.tar.xz
Make DynamicLibrary thread-safe w/r/t call to dlerror() after dlopen(). PR10718
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138260 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Support/Windows/DynamicLibrary.inc')
-rw-r--r--lib/Support/Windows/DynamicLibrary.inc4
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/Support/Windows/DynamicLibrary.inc b/lib/Support/Windows/DynamicLibrary.inc
index 5a0b2491f0..83da82a949 100644
--- a/lib/Support/Windows/DynamicLibrary.inc
+++ b/lib/Support/Windows/DynamicLibrary.inc
@@ -71,9 +71,10 @@ extern "C" {
DynamicLibrary DynamicLibrary::getPermanentLibrary(const char *filename,
std::string *errMsg) {
+ SmartScopedLock<true> lock(getMutex());
+
if (!filename) {
// When no file is specified, enumerate all DLLs and EXEs in the process.
- SmartScopedLock<true> lock(getMutex());
if (OpenedHandles == 0)
OpenedHandles = new DenseSet<HMODULE>();
@@ -90,7 +91,6 @@ DynamicLibrary DynamicLibrary::getPermanentLibrary(const char *filename,
return DynamicLibrary();
}
- SmartScopedLock<true> lock(getMutex());
if (OpenedHandles == 0)
OpenedHandles = new DenseSet<HMODULE>();