[clang] [clang-format] Fix crash involving array designators and dangling comma (PR #77045)
Björn Schäpers via cfe-commits
cfe-commits at lists.llvm.org
Sat Jan 6 15:14:27 PST 2024
================
@@ -1444,16 +1444,26 @@ WhitespaceManager::CellDescriptions WhitespaceManager::getCells(unsigned Start,
} else if (C.Tok->is(tok::comma)) {
if (!Cells.empty())
Cells.back().EndIndex = i;
- if (C.Tok->getNextNonComment()->isNot(tok::r_brace)) // dangling comma
+
+ if (const auto *Next = C.Tok->getNextNonComment();
+ Next && Next->isNot(tok::r_brace)) { // dangling comma
++Cell;
+ }
}
} else if (Depth == 1) {
if (C.Tok == MatchingParen) {
if (!Cells.empty())
Cells.back().EndIndex = i;
Cells.push_back(CellDescription{i, ++Cell, i + 1, false, nullptr});
- CellCounts.push_back(C.Tok->Previous->isNot(tok::comma) ? Cell + 1
- : Cell);
+ CellCounts.push_back(
+ C.Tok->Previous->isNot(tok::comma) &&
+ // When dealing with C array designators. There is a
+ // possibility of some nested array not having an `=`.
+ // When this happens we make the cells non retangular,
----------------
HazardyKnusperkeks wrote:
```suggestion
// When this happens we make the cells non rectangular,
```
https://github.com/llvm/llvm-project/pull/77045
More information about the cfe-commits
mailing list