Watch out for NULL types in NameSearchContext::AddTypeDecl or we crash.
git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@124051 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Expression/ClangASTSource.cpp b/source/Expression/ClangASTSource.cpp
index b18536b..a23547d 100644
--- a/source/Expression/ClangASTSource.cpp
+++ b/source/Expression/ClangASTSource.cpp
@@ -240,26 +240,26 @@
clang::NamedDecl *
NameSearchContext::AddTypeDecl(void *type)
{
- QualType qual_type = QualType::getFromOpaquePtr(type);
+ if (type)
+ {
+ QualType qual_type = QualType::getFromOpaquePtr(type);
- if (TagType *tag_type = dyn_cast<clang::TagType>(qual_type))
- {
- TagDecl *tag_decl = tag_type->getDecl();
-
- m_decls.push_back(tag_decl);
-
- return tag_decl;
+ if (TagType *tag_type = dyn_cast<clang::TagType>(qual_type))
+ {
+ TagDecl *tag_decl = tag_type->getDecl();
+
+ m_decls.push_back(tag_decl);
+
+ return tag_decl;
+ }
+ else if (ObjCObjectType *objc_object_type = dyn_cast<clang::ObjCObjectType>(qual_type))
+ {
+ ObjCInterfaceDecl *interface_decl = objc_object_type->getInterface();
+
+ m_decls.push_back((NamedDecl*)interface_decl);
+
+ return (NamedDecl*)interface_decl;
+ }
}
- else if (ObjCObjectType *objc_object_type = dyn_cast<clang::ObjCObjectType>(qual_type))
- {
- ObjCInterfaceDecl *interface_decl = objc_object_type->getInterface();
-
- m_decls.push_back((NamedDecl*)interface_decl);
-
- return (NamedDecl*)interface_decl;
- }
- else
- {
- return NULL;
- }
+ return NULL;
}