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
diff --git a/include/clang/Analysis/Analyses/PrintfFormatString.h b/include/clang/Analysis/Analyses/PrintfFormatString.h
index c5bac8c..6ae7e0c 100644
--- a/include/clang/Analysis/Analyses/PrintfFormatString.h
+++ b/include/clang/Analysis/Analyses/PrintfFormatString.h
@@ -176,9 +176,9 @@
   
   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 9907dc9..1afa9ad 100644
--- a/lib/Analysis/PrintfFormatString.cpp
+++ b/lib/Analysis/PrintfFormatString.cpp
@@ -233,7 +233,8 @@
     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;