Fixed a crash when we couldn't create a
authorSean Callanan <scallanan@apple.com>
Wed, 31 Oct 2012 02:01:58 +0000 (02:01 +0000)
committerSean Callanan <scallanan@apple.com>
Wed, 31 Oct 2012 02:01:58 +0000 (02:01 +0000)
CXXMethodDecl but tried to manipulate it
anyway.

<rdar://problem/12601996>

llvm-svn: 167095

lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp

index cf7d0eb..56689f5 100644 (file)
@@ -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