Skip to content

Conversation

@owenca
Copy link
Contributor

@owenca owenca commented Nov 8, 2025

Fixes #157405

@llvmbot
Copy link
Member

llvmbot commented Nov 8, 2025

@llvm/pr-subscribers-clang-format

Author: owenca (owenca)

Changes

Fixes #157405


Full diff: https://github.com/llvm/llvm-project/pull/167099.diff

2 Files Affected:

  • (modified) clang/lib/Format/WhitespaceManager.cpp (+4-1)
  • (modified) clang/unittests/Format/FormatTest.cpp (+13)
diff --git a/clang/lib/Format/WhitespaceManager.cpp b/clang/lib/Format/WhitespaceManager.cpp index f24b8ab14bdce..d37834e2df902 100644 --- a/clang/lib/Format/WhitespaceManager.cpp +++ b/clang/lib/Format/WhitespaceManager.cpp @@ -1215,7 +1215,10 @@ void WhitespaceManager::alignArrayInitializers() { bool FoundComplete = false; for (unsigned InsideIndex = ChangeIndex + 1; InsideIndex < ChangeEnd; ++InsideIndex) { - if (Changes[InsideIndex].Tok == C.Tok->MatchingParen) { + const auto *Tok = Changes[InsideIndex].Tok; + if (Tok->is(tok::pp_define)) + break; + if (Tok == C.Tok->MatchingParen) { alignArrayInitializers(ChangeIndex, InsideIndex + 1); ChangeIndex = InsideIndex + 1; FoundComplete = true; diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index ca9e7925e5e95..36ce5ef35acb3 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -22265,6 +22265,19 @@ TEST_F(FormatTest, CatchAlignArrayOfStructuresLeftAlignment) { "});", Style); + verifyNoCrash( + "PANEL_Ic PANEL_ic[PANEL_IC_NUMBER] =\n" + " {\n" + " {PIC(0), PIC(0), PIC(99), PIC(81), 0}, // Backbox\n" + " {PIC(1), PIC(83), PIC(191), PIC(137), 0}, // AK47\n" + "\n" + "#define PICALL1(a, b, c, d) \\\n" + " { PIC(a), PIC(b), PIC(c), PIC(d), 1 }\n" + "\n" + " PICALL1(1, 1, 75, 50),\n" + "};", + Style); + Style.AlignEscapedNewlines = FormatStyle::ENAS_DontAlign; verifyFormat("#define FOO \\\n" " int foo[][2] = { \\\n" 
Copy link
Contributor

@HazardyKnusperkeks HazardyKnusperkeks left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What about other pp directives?

@owenca
Copy link
Contributor Author

owenca commented Nov 10, 2025

What about other pp directives?

I wouldn't bother as brace tokens can only exist in macro bodies in practice.

@owenca owenca merged commit 836919b into llvm:main Nov 10, 2025
12 checks passed
@owenca owenca deleted the 157405 branch November 10, 2025 01:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

3 participants