aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2010-01-28 01:00:59 +0000
committerTed Kremenek <kremenek@apple.com>2010-01-28 01:00:59 +0000
commitd5f2096e266b7905df660b7839e69e9ed6ba9018 (patch)
treeb8ab59a82e3d3f272cafdad8295edb801c8320d4
parent936ea3b590117d2cd73b1b92621d06c4a7edbe60 (diff)
Allow HandleFormatSpecifier() to indicate that no more processing of the format string is desired.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94715 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/clang/Analysis/Analyses/PrintfFormatString.h4
-rw-r--r--lib/Analysis/PrintfFormatString.cpp3
2 files changed, 4 insertions, 3 deletions
diff --git a/include/clang/Analysis/Analyses/PrintfFormatString.h b/include/clang/Analysis/Analyses/PrintfFormatString.h
index c5bac8c726..6ae7e0c6e9 100644
--- a/include/clang/Analysis/Analyses/PrintfFormatString.h
+++ b/include/clang/Analysis/Analyses/PrintfFormatString.h
@@ -176,9 +176,9 @@ public:
virtual void HandleInvalidConversionSpecifier(const char *conversionChar) {}
- virtual void HandleFormatSpecifier(const FormatSpecifier &FS,
+ virtual bool HandleFormatSpecifier(const FormatSpecifier &FS,
const char *startSpecifier,
- const char *endSpecifier) {}
+ const char *endSpecifier) { return false; }
};
bool ParseFormatString(FormatStringHandler &H,
diff --git a/lib/Analysis/PrintfFormatString.cpp b/lib/Analysis/PrintfFormatString.cpp
index 9907dc9d42..1afa9ad2b7 100644
--- a/lib/Analysis/PrintfFormatString.cpp
+++ b/lib/Analysis/PrintfFormatString.cpp
@@ -233,7 +233,8 @@ bool ParseFormatSring(FormatStringHandler &H, const char *I, const char *E) {
if (!FSR.hasValue())
break;
// We have a format specifier. Pass it to the callback.
- H.HandleFormatSpecifier(FSR.getValue(), FSR.getStart(), I);
+ if (!H.HandleFormatSpecifier(FSR.getValue(), FSR.getStart(), I))
+ return false;
}
assert(I == E && "Format string not exhausted");
return false;