[clang] [clang-format] Fix crash involving array designators and dangling comma (PR #77045)

via cfe-commits cfe-commits at lists.llvm.org
Sat Jan 6 14:35:48 PST 2024


================
@@ -1444,16 +1444,22 @@ 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) &&
+                    !MatchingParen->MatchingParen->Previous->is(tok::equal)
----------------
XDeme wrote:

I hope the comment is helpful.

https://github.com/llvm/llvm-project/pull/77045


More information about the cfe-commits mailing list