]> granicus.if.org Git - clang/commitdiff
Fixed crash when using undefined protocols (GNU runtime).
authorDavid Chisnall <csdavec@swan.ac.uk>
Fri, 20 Nov 2009 14:50:59 +0000 (14:50 +0000)
committerDavid Chisnall <csdavec@swan.ac.uk>
Fri, 20 Nov 2009 14:50:59 +0000 (14:50 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89457 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGObjCGNU.cpp

index b431daa958f0b80a16972dae44515f837573b647..0eb624c4187afc2c4b4064e911409c2cd0aeea74 100644 (file)
@@ -747,9 +747,14 @@ llvm::Constant *CGObjCGNU::GenerateProtocolList(
   std::vector<llvm::Constant*> Elements;
   for (const std::string *iter = Protocols.begin(), *endIter = Protocols.end();
       iter != endIter ; iter++) {
-    llvm::Constant *protocol = ExistingProtocols[*iter];
-    if (!protocol)
+    llvm::Constant *protocol = 0;
+    llvm::StringMap<llvm::Constant*>::iterator value =
+      ExistingProtocols.find(*iter);
+    if (value == ExistingProtocols.end()) {
       protocol = GenerateEmptyProtocol(*iter);
+    } else {
+      protocol = value->getValue();
+    }
     llvm::Constant *Ptr = llvm::ConstantExpr::getBitCast(protocol,
                                                            PtrToInt8Ty);
     Elements.push_back(Ptr);