Add missing nullptr checks.
GetPersistentExpressionStateForLanguage() can return a nullptr if it
cannot construct a typesystem. This patch adds missing nullptr checks
at all uses.
Inspired by rdar://problem/58317195
Differential Revision: https://reviews.llvm.org/D72413
diff --git a/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp b/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp
index 6634824..a302a73c 100644
--- a/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp
+++ b/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp
@@ -126,7 +126,7 @@
}
void ClangExpressionDeclMap::DidParse() {
- if (m_parser_vars) {
+ if (m_parser_vars && m_parser_vars->m_persistent_vars) {
for (size_t entity_index = 0, num_entities = m_found_entities.GetSize();
entity_index < num_entities; ++entity_index) {
ExpressionVariableSP var_sp(
@@ -262,6 +262,9 @@
if (!m_parser_vars->m_target_info.IsValid())
return false;
+ if (!m_parser_vars->m_persistent_vars)
+ return false;
+
ClangExpressionVariable *var = llvm::cast<ClangExpressionVariable>(
m_parser_vars->m_persistent_vars
->CreatePersistentVariable(
@@ -327,7 +330,7 @@
ClangExpressionVariable *var(ClangExpressionVariable::FindVariableInList(
m_found_entities, decl, GetParserID()));
- if (!var) {
+ if (!var && m_parser_vars->m_persistent_vars) {
var = ClangExpressionVariable::FindVariableInList(
*m_parser_vars->m_persistent_vars, decl, GetParserID());
is_persistent_variable = true;
@@ -733,6 +736,8 @@
ClangASTContext::GetScratch(*target);
+ if (!m_parser_vars->m_persistent_vars)
+ return nullptr;
return m_parser_vars->m_persistent_vars->GetPersistentDecl(name);
}
@@ -1390,7 +1395,7 @@
return;
// No ParserVars means we can't do register or variable lookup.
- if (!m_parser_vars)
+ if (!m_parser_vars || !m_parser_vars->m_persistent_vars)
return;
ExpressionVariableSP pvar_sp(