]> granicus.if.org Git - clang/commitdiff
Check for null ObjCInterfaceDecls returned from getClassInterface() when generating...
authorTed Kremenek <kremenek@apple.com>
Tue, 21 Sep 2010 04:45:46 +0000 (04:45 +0000)
committerTed Kremenek <kremenek@apple.com>
Tue, 21 Sep 2010 04:45:46 +0000 (04:45 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114392 91177308-0d34-0410-b5e6-96231b3b80d8

tools/libclang/CIndexUSRs.cpp

index 554165754ace93234d1e865f6cca6695c473ad54..4f23e59ec204712d8489f17911ef7ca912e313bb 100644 (file)
@@ -286,10 +286,17 @@ void USRGenerator::VisitObjCMethodDecl(ObjCMethodDecl *D) {
   do {
     if (ObjCCategoryDecl *CD = dyn_cast<ObjCCategoryDecl>(container))
       if (CD->IsClassExtension()) {
-        Visit(CD->getClassInterface());
-        break;
-      }    
-    Visit(cast<Decl>(D->getDeclContext()));
+        // ID can be null with invalid code.
+        if (ObjCInterfaceDecl *ID = CD->getClassInterface()) {
+          Visit(ID);
+         break;
+        }
+        // Invalid code.  Can't generate USR.
+        IgnoreResults = true;
+        return;
+      }
+
+    Visit(container);
   }
   while (false);