forked from OSchip/llvm-project
LLDB needs a mutex around getopt_long_only() function calls to avoid multi-threading option parsing issues.
<rdar://problem/17052381> llvm-svn: 252111
This commit is contained in:
parent
ba19c6eed8
commit
c77ce7b626
|
@ -11,6 +11,7 @@
|
|||
#define liblldb_OptionParser_h_
|
||||
|
||||
#include <string>
|
||||
#include "lldb/Host/Mutex.h"
|
||||
|
||||
struct option;
|
||||
|
||||
|
@ -38,7 +39,7 @@ public:
|
|||
eOptionalArgument
|
||||
};
|
||||
|
||||
static void Prepare();
|
||||
static void Prepare(Mutex::Locker &locker);
|
||||
|
||||
static void EnableError(bool error);
|
||||
|
||||
|
|
|
@ -16,8 +16,10 @@
|
|||
using namespace lldb_private;
|
||||
|
||||
void
|
||||
OptionParser::Prepare()
|
||||
OptionParser::Prepare(Mutex::Locker &locker)
|
||||
{
|
||||
static Mutex g_mutex(Mutex::eMutexTypeNormal);
|
||||
locker.Lock(g_mutex);
|
||||
#ifdef __GLIBC__
|
||||
optind = 0;
|
||||
#else
|
||||
|
|
|
@ -575,7 +575,8 @@ Args::ParseOptions (Options &options)
|
|||
}
|
||||
}
|
||||
}
|
||||
OptionParser::Prepare();
|
||||
Mutex::Locker options_locker(NULL);
|
||||
OptionParser::Prepare(options_locker);
|
||||
int val;
|
||||
while (1)
|
||||
{
|
||||
|
@ -1189,7 +1190,8 @@ Args::ParseAliasOptions (Options &options,
|
|||
}
|
||||
}
|
||||
|
||||
OptionParser::Prepare();
|
||||
Mutex::Locker options_locker(NULL);
|
||||
OptionParser::Prepare(options_locker);
|
||||
int val;
|
||||
while (1)
|
||||
{
|
||||
|
@ -1366,7 +1368,8 @@ Args::ParseArgsForCompletion
|
|||
}
|
||||
}
|
||||
|
||||
OptionParser::Prepare();
|
||||
Mutex::Locker options_locker(NULL);
|
||||
OptionParser::Prepare(options_locker);
|
||||
OptionParser::EnableError(false);
|
||||
|
||||
int val;
|
||||
|
|
Loading…
Reference in New Issue