Fixed some potential null-pointer bugs in the
expression parser code.
git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@153128 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Expression/ClangASTSource.cpp b/source/Expression/ClangASTSource.cpp
index bfe876d..d50e808 100644
--- a/source/Expression/ClangASTSource.cpp
+++ b/source/Expression/ClangASTSource.cpp
@@ -387,6 +387,9 @@
Decl *copied_decl = m_ast_importer->CopyDecl(m_ast_context, original_ctx, decl);
+ if (!copied_decl)
+ continue;
+
if (FieldDecl *copied_field = dyn_cast<FieldDecl>(copied_decl))
{
QualType copied_field_type = copied_field->getType();
@@ -1291,6 +1294,9 @@
Decl *copied_decl = m_ast_importer->CopyDecl(m_ast_context, namespace_decl.GetASTContext(), namespace_decl.GetNamespaceDecl());
+ if (!copied_decl)
+ return NULL;
+
NamespaceDecl *copied_namespace_decl = dyn_cast<NamespaceDecl>(copied_decl);
m_ast_importer->RegisterNamespaceMap(copied_namespace_decl, namespace_decls);
@@ -1311,7 +1317,7 @@
SetImportInProgress(false);
- if (ret_qual_type->getCanonicalTypeInternal().isNull())
+ if (ret && ret_qual_type->getCanonicalTypeInternal().isNull())
// this shouldn't happen, but we're hardening because the AST importer seems to be generating bad types
// on occasion.
return NULL;