diff options
| author | Tamas Berghammer <tberghammer@google.com> | 2015-10-09 12:43:08 +0000 |
|---|---|---|
| committer | Tamas Berghammer <tberghammer@google.com> | 2015-10-09 12:43:08 +0000 |
| commit | 69d0b330dd8eb7cb9a55bd8f32902151c19c4f08 (patch) | |
| tree | 9153dfdfa4dd81faf6245b42ad721882c5ab60fc /lldb/source/Symbol/ClangASTContext.cpp | |
| parent | 3a6b82b6056dc53cba2c055a73bc9c56b0cae27a (diff) | |
| download | bcm5719-llvm-69d0b330dd8eb7cb9a55bd8f32902151c19c4f08.tar.gz bcm5719-llvm-69d0b330dd8eb7cb9a55bd8f32902151c19c4f08.zip | |
Fix a crash, an UB and add some assert to dwo symbol file handling
llvm-svn: 249827
Diffstat (limited to 'lldb/source/Symbol/ClangASTContext.cpp')
| -rw-r--r-- | lldb/source/Symbol/ClangASTContext.cpp | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/lldb/source/Symbol/ClangASTContext.cpp b/lldb/source/Symbol/ClangASTContext.cpp index 6d61c861f82..2ffb6d62bae 100644 --- a/lldb/source/Symbol/ClangASTContext.cpp +++ b/lldb/source/Symbol/ClangASTContext.cpp @@ -2593,14 +2593,16 @@ ClangASTContext::IsArrayType (lldb::opaque_compiler_type_t type, { 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 @@ ClangASTContext::IsArrayType (lldb::opaque_compiler_type_t type, 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, |

