From b7824d9919c3588e898c22f47a5248f10a7a084d Mon Sep 17 00:00:00 2001 From: Benjamin Kramer Date: Mon, 21 May 2012 19:40:38 +0000 Subject: [PATCH] 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 --- lib/StaticAnalyzer/Core/ObjCMessage.cpp | 19 +++++++++---------- test/Analysis/PR12905.c | 8 ++++++++ 2 files changed, 17 insertions(+), 10 deletions(-) create mode 100644 test/Analysis/PR12905.c 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(); +} -- 2.50.1