aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2012-05-21 19:40:38 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2012-05-21 19:40:38 +0000
commitb7824d9919c3588e898c22f47a5248f10a7a084d (patch)
treed50b225a8fcef035617b5f8821fa2ae1e4712a6a
parent5a42a0292ad4d11ccf0ae9d06f6c15c3c811adfd (diff)
Analyzer: Fix PR12905, a crash when encountering a call to a function named "C".
While there clean up indentation. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157204 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/StaticAnalyzer/Core/ObjCMessage.cpp19
-rw-r--r--test/Analysis/PR12905.c8
2 files changed, 17 insertions, 10 deletions
diff --git a/lib/StaticAnalyzer/Core/ObjCMessage.cpp b/lib/StaticAnalyzer/Core/ObjCMessage.cpp
index 2003c8d29c..a00eece506 100644
--- a/lib/StaticAnalyzer/Core/ObjCMessage.cpp
+++ b/lib/StaticAnalyzer/Core/ObjCMessage.cpp
@@ -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/test/Analysis/PR12905.c b/test/Analysis/PR12905.c
new file mode 100644
index 0000000000..8f678d1144
--- /dev/null
+++ b/test/Analysis/PR12905.c
@@ -0,0 +1,8 @@
+// RUN: %clang_cc1 -analyze -analyzer-checker=core %s
+// PR12905
+
+void C(void);
+
+void t(void) {
+ C();
+}