diff options
author | Sean Callanan <scallanan@apple.com> | 2012-10-31 02:01:58 +0000 |
---|---|---|
committer | Sean Callanan <scallanan@apple.com> | 2012-10-31 02:01:58 +0000 |
commit | 4ac7ec7341ff01218443ac71c7ea844123b97d7a (patch) | |
tree | a50710a114181cc7569ec8047f64df8ae6715ac0 /lldb/source/Plugins | |
parent | e2db91b8b0800dc091ea05136529d748455970c1 (diff) | |
download | bcm5719-llvm-4ac7ec7341ff01218443ac71c7ea844123b97d7a.tar.gz bcm5719-llvm-4ac7ec7341ff01218443ac71c7ea844123b97d7a.zip |
Fixed a crash when we couldn't create a
CXXMethodDecl but tried to manipulate it
anyway.
<rdar://problem/12601996>
llvm-svn: 167095
Diffstat (limited to 'lldb/source/Plugins')
-rw-r--r-- | lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp index cf7d0ebbb81..56689f58136 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp @@ -6115,24 +6115,29 @@ SymbolFileDWARF::ParseType (const SymbolContext& sc, DWARFCompileUnit* dwarf_cu, is_explicit, is_attr_used, is_artificial); - LinkDeclContextToDIE(ClangASTContext::GetAsDeclContext(cxx_method_decl), die); - - Host::SetCrashDescription (NULL); - - type_handled = cxx_method_decl != NULL; - ClangASTMetadata metadata; - metadata.SetUserID(MakeUserID(die->GetOffset())); - - if (!object_pointer_name.empty()) + type_handled = cxx_method_decl != NULL; + + if (type_handled) { - metadata.SetObjectPtrName(object_pointer_name.c_str()); - if (log) - log->Printf ("Setting object pointer name: %s on method object 0x%ld.\n", - object_pointer_name.c_str(), - (uintptr_t) cxx_method_decl); + LinkDeclContextToDIE(ClangASTContext::GetAsDeclContext(cxx_method_decl), die); + + Host::SetCrashDescription (NULL); + + + ClangASTMetadata metadata; + metadata.SetUserID(MakeUserID(die->GetOffset())); + + if (!object_pointer_name.empty()) + { + metadata.SetObjectPtrName(object_pointer_name.c_str()); + if (log) + log->Printf ("Setting object pointer name: %s on method object 0x%ld.\n", + object_pointer_name.c_str(), + (uintptr_t) cxx_method_decl); + } + GetClangASTContext().SetMetadata ((uintptr_t)cxx_method_decl, metadata); } - GetClangASTContext().SetMetadata ((uintptr_t)cxx_method_decl, metadata); } } else |