forked from OSchip/llvm-project
Actaully lock accesses to OptionValueFileSpecList objects
The patch in r359029 missed a few accessors and mutators. This patch also changes the lock to a recursive one as OptionValueFileSpecList::Clear() can be invoked from some of the other methods. llvm-svn: 361440
This commit is contained in:
parent
dd0fe187ab
commit
bb2b52769b
|
@ -40,6 +40,7 @@ public:
|
||||||
VarSetOperationType = eVarSetOperationAssign) = delete;
|
VarSetOperationType = eVarSetOperationAssign) = delete;
|
||||||
|
|
||||||
bool Clear() override {
|
bool Clear() override {
|
||||||
|
std::lock_guard<std::recursive_mutex> lock(m_mutex);
|
||||||
m_current_value.Clear();
|
m_current_value.Clear();
|
||||||
m_value_was_set = false;
|
m_value_was_set = false;
|
||||||
return true;
|
return true;
|
||||||
|
@ -52,22 +53,22 @@ public:
|
||||||
// Subclass specific functions
|
// Subclass specific functions
|
||||||
|
|
||||||
FileSpecList GetCurrentValue() const {
|
FileSpecList GetCurrentValue() const {
|
||||||
std::lock_guard<std::mutex> lock(m_mutex);
|
std::lock_guard<std::recursive_mutex> lock(m_mutex);
|
||||||
return m_current_value;
|
return m_current_value;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetCurrentValue(const FileSpecList &value) {
|
void SetCurrentValue(const FileSpecList &value) {
|
||||||
std::lock_guard<std::mutex> lock(m_mutex);
|
std::lock_guard<std::recursive_mutex> lock(m_mutex);
|
||||||
m_current_value = value;
|
m_current_value = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AppendCurrentValue(const FileSpec &value) {
|
void AppendCurrentValue(const FileSpec &value) {
|
||||||
std::lock_guard<std::mutex> lock(m_mutex);
|
std::lock_guard<std::recursive_mutex> lock(m_mutex);
|
||||||
m_current_value.Append(value);
|
m_current_value.Append(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
mutable std::mutex m_mutex;
|
mutable std::recursive_mutex m_mutex;
|
||||||
FileSpecList m_current_value;
|
FileSpecList m_current_value;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@ using namespace lldb_private;
|
||||||
|
|
||||||
void OptionValueFileSpecList::DumpValue(const ExecutionContext *exe_ctx,
|
void OptionValueFileSpecList::DumpValue(const ExecutionContext *exe_ctx,
|
||||||
Stream &strm, uint32_t dump_mask) {
|
Stream &strm, uint32_t dump_mask) {
|
||||||
|
std::lock_guard<std::recursive_mutex> lock(m_mutex);
|
||||||
if (dump_mask & eDumpOptionType)
|
if (dump_mask & eDumpOptionType)
|
||||||
strm.Printf("(%s)", GetTypeAsCString());
|
strm.Printf("(%s)", GetTypeAsCString());
|
||||||
if (dump_mask & eDumpOptionValue) {
|
if (dump_mask & eDumpOptionValue) {
|
||||||
|
@ -43,6 +44,7 @@ void OptionValueFileSpecList::DumpValue(const ExecutionContext *exe_ctx,
|
||||||
|
|
||||||
Status OptionValueFileSpecList::SetValueFromString(llvm::StringRef value,
|
Status OptionValueFileSpecList::SetValueFromString(llvm::StringRef value,
|
||||||
VarSetOperationType op) {
|
VarSetOperationType op) {
|
||||||
|
std::lock_guard<std::recursive_mutex> lock(m_mutex);
|
||||||
Status error;
|
Status error;
|
||||||
Args args(value.str());
|
Args args(value.str());
|
||||||
const size_t argc = args.GetArgumentCount();
|
const size_t argc = args.GetArgumentCount();
|
||||||
|
@ -163,6 +165,6 @@ Status OptionValueFileSpecList::SetValueFromString(llvm::StringRef value,
|
||||||
}
|
}
|
||||||
|
|
||||||
lldb::OptionValueSP OptionValueFileSpecList::DeepCopy() const {
|
lldb::OptionValueSP OptionValueFileSpecList::DeepCopy() const {
|
||||||
std::lock_guard<std::mutex> lock(m_mutex);
|
std::lock_guard<std::recursive_mutex> lock(m_mutex);
|
||||||
return OptionValueSP(new OptionValueFileSpecList(m_current_value));
|
return OptionValueSP(new OptionValueFileSpecList(m_current_value));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue