[clang] a72609c - [Format] Don't crash on mismatched brackets

Sam McCall via cfe-commits cfe-commits at lists.llvm.org
Thu Nov 24 06:14:14 PST 2022


Author: Sam McCall
Date: 2022-11-24T15:14:06+01:00
New Revision: a72609cabef4c5f5afa3811575a3963830cb13dd

URL: https://github.com/llvm/llvm-project/commit/a72609cabef4c5f5afa3811575a3963830cb13dd
DIFF: https://github.com/llvm/llvm-project/commit/a72609cabef4c5f5afa3811575a3963830cb13dd.diff

LOG: [Format] Don't crash on mismatched brackets

Added: 
    

Modified: 
    clang/lib/Format/TokenAnnotator.cpp
    clang/unittests/Format/FormatTestCSharp.cpp

Removed: 
    


################################################################################
diff  --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp
index 7f16d04d898b9..889dfa5fd7a63 100644
--- a/clang/lib/Format/TokenAnnotator.cpp
+++ b/clang/lib/Format/TokenAnnotator.cpp
@@ -2837,7 +2837,7 @@ static bool isFunctionDeclarationName(bool IsCpp, const FormatToken &Current,
     if (!Current.is(TT_StartOfName) || Current.NestingLevel != 0)
       return false;
     for (; Next; Next = Next->Next) {
-      if (Next->is(TT_TemplateOpener)) {
+      if (Next->is(TT_TemplateOpener) && Next->MatchingParen) {
         Next = Next->MatchingParen;
       } else if (Next->is(tok::coloncolon)) {
         Next = Next->Next;

diff  --git a/clang/unittests/Format/FormatTestCSharp.cpp b/clang/unittests/Format/FormatTestCSharp.cpp
index a18f57ec57144..1928a0d2da632 100644
--- a/clang/unittests/Format/FormatTestCSharp.cpp
+++ b/clang/unittests/Format/FormatTestCSharp.cpp
@@ -1600,5 +1600,9 @@ TEST_F(FormatTestCSharp, ShortFunctions) {
                Style);
 }
 
+TEST_F(FormatTestCSharp, BrokenBrackets) {
+  EXPECT_NE("", format("int where b <")); // reduced from crasher
+}
+
 } // namespace format
 } // end namespace clang


        


More information about the cfe-commits mailing list