Fix a crash, an UB and add some assert to dwo symbol file handling
llvm-svn: 249827
diff --git a/lldb/source/Symbol/ClangASTContext.cpp b/lldb/source/Symbol/ClangASTContext.cpp
index 6d61c86..2ffb6d6 100644
--- a/lldb/source/Symbol/ClangASTContext.cpp
+++ b/lldb/source/Symbol/ClangASTContext.cpp
@@ -2593,14 +2593,16 @@
{
default:
break;
-
+
case clang::Type::ConstantArray:
if (element_type_ptr)
element_type_ptr->SetCompilerType (getASTContext(), llvm::cast<clang::ConstantArrayType>(qual_type)->getElementType());
if (size)
*size = llvm::cast<clang::ConstantArrayType>(qual_type)->getSize().getLimitedValue(ULLONG_MAX);
+ if (is_incomplete)
+ *is_incomplete = false;
return true;
-
+
case clang::Type::IncompleteArray:
if (element_type_ptr)
element_type_ptr->SetCompilerType (getASTContext(), llvm::cast<clang::IncompleteArrayType>(qual_type)->getElementType());
@@ -2609,21 +2611,25 @@
if (is_incomplete)
*is_incomplete = true;
return true;
-
+
case clang::Type::VariableArray:
if (element_type_ptr)
element_type_ptr->SetCompilerType (getASTContext(), llvm::cast<clang::VariableArrayType>(qual_type)->getElementType());
if (size)
*size = 0;
+ if (is_incomplete)
+ *is_incomplete = false;
return true;
-
+
case clang::Type::DependentSizedArray:
if (element_type_ptr)
element_type_ptr->SetCompilerType (getASTContext(), llvm::cast<clang::DependentSizedArrayType>(qual_type)->getElementType());
if (size)
*size = 0;
+ if (is_incomplete)
+ *is_incomplete = false;
return true;
-
+
case clang::Type::Typedef:
return IsArrayType(llvm::cast<clang::TypedefType>(qual_type)->getDecl()->getUnderlyingType().getAsOpaquePtr(),
element_type_ptr,