[clang] [clang-format] Fix crash on malformed operator input (PR #199098)
via cfe-commits
cfe-commits at lists.llvm.org
Tue Jun 16 00:55:34 PDT 2026
https://github.com/mygitljf updated https://github.com/llvm/llvm-project/pull/199098
>From 737bbf94b817aaf551154437f23f1751dfbbc367 Mon Sep 17 00:00:00 2001
From: mygitljf <2410316423 at qq.com>
Date: Sun, 7 Jun 2026 10:52:04 +0000
Subject: [PATCH] Guard malformed operator scan
---
clang/lib/Format/TokenAnnotator.cpp | 3 ++-
clang/unittests/Format/FormatTest.cpp | 1 +
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp
index 43e4f6796b6dd..bc2eabaaaba95 100644
--- a/clang/lib/Format/TokenAnnotator.cpp
+++ b/clang/lib/Format/TokenAnnotator.cpp
@@ -1690,7 +1690,8 @@ class AnnotatingParser {
}
}
while (CurrentToken &&
- CurrentToken->isNoneOf(tok::l_paren, tok::semi, tok::r_paren)) {
+ CurrentToken->isNoneOf(tok::l_paren, tok::semi, tok::r_paren,
+ tok::r_brace)) {
if (CurrentToken->isOneOf(tok::star, tok::amp))
CurrentToken->setType(TT_PointerOrReference);
auto Next = CurrentToken->getNextNonComment();
diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp
index 83e2c5b38ceaf..7ffe5950f9834 100644
--- a/clang/unittests/Format/FormatTest.cpp
+++ b/clang/unittests/Format/FormatTest.cpp
@@ -14381,6 +14381,7 @@ TEST_F(FormatTest, IncorrectCodeUnbalancedBraces) {
verifyNoCrash("struct Foo {\n"
" operator foo(bar\n"
"};");
+ verifyNoCrash("{ operator } a");
verifyNoCrash("decltype( {\n"
" {");
}
More information about the cfe-commits
mailing list