Author: enrico Date: Tue Apr 8 13:36:09 2014 New Revision: 205782 URL: http://llvm.org/viewvc/llvm-project?rev=205782&view=rev Log: Fix the GetArrayElementType() call so it will not crash when called on a non-array thing Also, the stride is now a pointer so one can avoid passing it if it's not required
Modified: lldb/trunk/include/lldb/Symbol/ClangASTType.h lldb/trunk/source/Symbol/ClangASTType.cpp Modified: lldb/trunk/include/lldb/Symbol/ClangASTType.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Symbol/ClangASTType.h?rev=205782&r1=205781&r2=205782&view=diff ============================================================================== --- lldb/trunk/include/lldb/Symbol/ClangASTType.h (original) +++ lldb/trunk/include/lldb/Symbol/ClangASTType.h Tue Apr 8 13:36:09 2014 @@ -312,7 +312,7 @@ public: clang::DeclContext *decl_ctx) const; ClangASTType - GetArrayElementType (uint64_t& stride) const; + GetArrayElementType (uint64_t *stride = nullptr) const; ClangASTType GetCanonicalType () const; Modified: lldb/trunk/source/Symbol/ClangASTType.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/ClangASTType.cpp?rev=205782&r1=205781&r2=205782&view=diff ============================================================================== --- lldb/trunk/source/Symbol/ClangASTType.cpp (original) +++ lldb/trunk/source/Symbol/ClangASTType.cpp Tue Apr 8 13:36:09 2014 @@ -1638,16 +1638,22 @@ ClangASTType::AddVolatileModifier () con } ClangASTType -ClangASTType::GetArrayElementType (uint64_t& stride) const +ClangASTType::GetArrayElementType (uint64_t *stride) const { if (IsValid()) { QualType qual_type(GetCanonicalQualType()); - ClangASTType element_type (m_ast, qual_type.getTypePtr()->getArrayElementTypeNoTypeQual()->getCanonicalTypeUnqualified()); + const clang::Type *array_elem_type = qual_type.getTypePtr()->getArrayElementTypeNoTypeQual(); + + if (!array_elem_type) + return ClangASTType(); + + ClangASTType element_type (m_ast, array_elem_type->getCanonicalTypeUnqualified()); // TODO: the real stride will be >= this value.. find the real one! - stride = element_type.GetByteSize(); + if (stride) + *stride = element_type.GetByteSize(); return element_type; _______________________________________________ lldb-commits mailing list lldb-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits