r215549 - Fix crasher bug in clang-format.

Manuel Klimek klimek at google.com
Wed Aug 13 07:00:42 PDT 2014


Author: klimek
Date: Wed Aug 13 09:00:41 2014
New Revision: 215549

URL: http://llvm.org/viewvc/llvm-project?rev=215549&view=rev
Log:
Fix crasher bug in clang-format.

Modified:
    cfe/trunk/lib/Format/TokenAnnotator.cpp
    cfe/trunk/unittests/Format/FormatTest.cpp

Modified: cfe/trunk/lib/Format/TokenAnnotator.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/TokenAnnotator.cpp?rev=215549&r1=215548&r2=215549&view=diff
==============================================================================
--- cfe/trunk/lib/Format/TokenAnnotator.cpp (original)
+++ cfe/trunk/lib/Format/TokenAnnotator.cpp Wed Aug 13 09:00:41 2014
@@ -701,8 +701,11 @@ private:
       for (FormatToken *Previous = Current.Previous;
            Previous && !Previous->isOneOf(tok::comma, tok::semi);
            Previous = Previous->Previous) {
-        if (Previous->isOneOf(tok::r_square, tok::r_paren))
+        if (Previous->isOneOf(tok::r_square, tok::r_paren)) {
           Previous = Previous->MatchingParen;
+          if (!Previous)
+            break;
+        }
         if ((Previous->Type == TT_BinaryOperator ||
              Previous->Type == TT_UnaryOperator) &&
             Previous->isOneOf(tok::star, tok::amp)) {

Modified: cfe/trunk/unittests/Format/FormatTest.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=215549&r1=215548&r2=215549&view=diff
==============================================================================
--- cfe/trunk/unittests/Format/FormatTest.cpp (original)
+++ cfe/trunk/unittests/Format/FormatTest.cpp Wed Aug 13 09:00:41 2014
@@ -9200,5 +9200,9 @@ TEST_F(FormatTest, DisableRegions) {
                    "   int   k;"));
 }
 
+TEST_F(FormatTest, DoNotCrashOnInvalidInput) {
+  format("? ) =");
+}
+
 } // end namespace tooling
 } // end namespace clang





More information about the cfe-commits mailing list