Analyzer: Fix PR12905, a crash when encountering a call to a function named "C".
authorBenjamin Kramer <benny.kra@googlemail.com>
Mon, 21 May 2012 19:40:38 +0000 (19:40 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Mon, 21 May 2012 19:40:38 +0000 (19:40 +0000)
While there clean up indentation.

llvm-svn: 157204

clang/lib/StaticAnalyzer/Core/ObjCMessage.cpp
clang/test/Analysis/PR12905.c [new file with mode: 0644]

index 2003c8d..a00eece 100644 (file)
@@ -161,16 +161,15 @@ bool CallOrObjCMessage::hasNonZeroCallbackArg() const {
 }
 
 bool CallOrObjCMessage::isCFCGAllowingEscape(StringRef FName) {
-  if (FName[0] == 'C' && (FName[1] == 'F' || FName[1] == 'G'))
-         if (StrInStrNoCase(FName, "InsertValue") != StringRef::npos||
-             StrInStrNoCase(FName, "AddValue") != StringRef::npos ||
-             StrInStrNoCase(FName, "SetValue") != StringRef::npos ||
-             StrInStrNoCase(FName, "WithData") != StringRef::npos ||
-             StrInStrNoCase(FName, "AppendValue") != StringRef::npos||
-             StrInStrNoCase(FName, "SetAttribute") != StringRef::npos) {
-       return true;
-     }
-  return false;
+  if (!FName.startswith("CF") && !FName.startswith("CG"))
+    return false;
+
+  return StrInStrNoCase(FName, "InsertValue")  != StringRef::npos ||
+         StrInStrNoCase(FName, "AddValue")     != StringRef::npos ||
+         StrInStrNoCase(FName, "SetValue")     != StringRef::npos ||
+         StrInStrNoCase(FName, "WithData")     != StringRef::npos ||
+         StrInStrNoCase(FName, "AppendValue")  != StringRef::npos ||
+         StrInStrNoCase(FName, "SetAttribute") != StringRef::npos;
 }
 
 
diff --git a/clang/test/Analysis/PR12905.c b/clang/test/Analysis/PR12905.c
new file mode 100644 (file)
index 0000000..8f678d1
--- /dev/null
@@ -0,0 +1,8 @@
+// RUN: %clang_cc1 -analyze -analyzer-checker=core %s
+// PR12905
+
+void C(void);
+
+void t(void) {
+  C();
+}