<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/56682>56682</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Issue with the `AlignArrayOfStructures` option in clang-format
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          navneethsrsh
      </td>
    </tr>
</table>

<pre>
    When setting the `AlignArrayOfStructures` option to either `Right` or `Left` clang-format crashes.

This is what I've managed to narrow it down to:

```c
static constexpr Option_table options{
                Option_record{
                              "-c", "--colour",
                              "Show coloured output; off by default", },
                Option_record{"-h",   "--help",      "Show this menu"}, // No trailing comma after "menu"
                Option_record{
                              "-b", "--backup",
                              "Backup file before formatting; on by "
                              "default" }, // No trailing comma after "default"
};
```
When running clang-format with code having the above snippet, it crashes if `AlignArrayOfStructures` is not set to `None`. Screenshot of failure message on Emacs along with the .clang-format file below.

__Fails when set to Left__
![01-fail-AlignArrayOfStructures-Left](https://user-images.githubusercontent.com/75144673/180594924-2bf57149-c2c0-453f-934b-e9503cc585c1.png)

__Fails when set to Right__
![02-fail-AlignArrayOfStructures-Right](https://user-images.githubusercontent.com/75144673/180594927-b593d061-e3ed-41d0-905e-f8b828475c64.png)

__Suceeds when set to None__
![03-success-AlignArrayOfStructures-None](https://user-images.githubusercontent.com/75144673/180594929-de21b047-7acd-4b2c-a43f-aeb9c9b818b8.png)

```c
static constexpr Option_table options{
                Option_record{
                              "-c", "--colour",
                              "Show coloured output; off by default", },
                Option_record{"-h",   "--help",      "Show this menu"}, // No trailing comma after "menu"
                Option_record{
                              "-b", "--backup",
                              "Backup file before formatting; on by "
                              "default", }, // Trailing comma after "default"
};
```
clang-format did not crash for any setting of `AlignArrayOfStructures` after adding a trailing comma to the last member (code above).


__Succeeds when set to Right (after adding trailing comma)__
> Same result when set to Left


![04-success-with-trailing-comma](https://user-images.githubusercontent.com/75144673/180594932-9f1b5831-4e76-4e0b-b8c0-ef6893c5b577.png)

It did not matter if the first two had the trailing comma, only the last one had to have it or it would crash.

Attaching the source and .clang-format file from the screenshots if that helps.
[src-and-clang-fmt.tar.gz](https://github.com/llvm/llvm-project/files/9173288/src-and-clang-fmt.tar.gz)

__LLVM/Clang Source__: Gentoo Portage

__Version Info__:
```
clang version 14.0.4
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/lib/llvm/14/bin
```
__Stack Backtrace__:
```
Stack dump:
0.      Program arguments: clang-format src/arg_parser.cpp
 #0 0x00007f623b2563a2 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/lib/llvm/14/bin/../lib64/libLLVM-14.so+0xe493a2)
 #1 0x00007f623b253f74 llvm::sys::RunSignalHandlers() (/usr/lib/llvm/14/bin/../lib64/libLLVM-14.so+0xe46f74)
 #2 0x00007f623b2540f6 (/usr/lib/llvm/14/bin/../lib64/libLLVM-14.so+0xe470f6)
 #3 0x00007f623a0177c0 (/lib64/libc.so.6+0x3d7c0)
 #4 0x00007f6243af07ca clang::format::WhitespaceManager::alignArrayInitializersRightJustified(clang::format::WhitespaceManager::CellDescriptions&&) (/usr/lib/llvm/14/bin/../lib64/libclang-cpp.so.14+0x2bba7ca)
 #5 0x00007f6243af1a6b clang::format::WhitespaceManager::alignArrayInitializers(unsigned int, unsigned int) (/usr/lib/llvm/14/bin/../lib64/libclang-cpp.so.14+0x2bbba6b)
 #6 0x00007f6243af1b1b clang::format::WhitespaceManager::alignArrayInitializers() (/usr/lib/llvm/14/bin/../lib64/libclang-cpp.so.14+0x2bbbb1b)
 #7 0x00007f6243af41a6 clang::format::WhitespaceManager::generateReplacements() (/usr/lib/llvm/14/bin/../lib64/libclang-cpp.so.14+0x2bbe1a6)
 #8 0x00007f6243a8d081 (/usr/lib/llvm/14/bin/../lib64/libclang-cpp.so.14+0x2b57081)
 #9 0x00007f6243abab54 clang::format::TokenAnalyzer::process() (/usr/lib/llvm/14/bin/../lib64/libclang-cpp.so.14+0x2b84b54)
#10 0x00007f6243a89e48 (/usr/lib/llvm/14/bin/../lib64/libclang-cpp.so.14+0x2b53e48)
#11 0x00007f6243a89eb8 (/usr/lib/llvm/14/bin/../lib64/libclang-cpp.so.14+0x2b53eb8)
#12 0x00007f6243a911c8 clang::format::internal::reformat(clang::format::FormatStyle const&, llvm::StringRef, llvm::ArrayRef<clang::tooling::Range>, unsigned int, unsigned int, unsigned int, llvm::StringRef, clang::format::FormattingAttemptStatus*) (/usr/lib/llvm/14/bin/../lib64/libclang-cpp.so.14+0x2b5b1c8)
#13 0x00007f6243a9233e clang::format::reformat(clang::format::FormatStyle const&, llvm::StringRef, llvm::ArrayRef<clang::tooling::Range>, llvm::StringRef, clang::format::FormattingAttemptStatus*) (/usr/lib/llvm/14/bin/../lib64/libclang-cpp.so.14+0x2b5c33e)
#14 0x0000564f08163f09 (/usr/lib/llvm/14/bin/clang-format+0x11f09)
#15 0x0000564f0815c5ca (/usr/lib/llvm/14/bin/clang-format+0xa5ca)
#16 0x00007f623a00331a (/lib64/libc.so.6+0x2931a)
#17 0x00007f623a0033cc __libc_start_main (/lib64/libc.so.6+0x293cc)
#18 0x0000564f0815ca41 (/usr/lib/llvm/14/bin/clang-format+0xaa41)
Segmentation fault
``
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztWcty47YS_Rp5g6KKBN8LLWxPnDg1SabsqWSpAkBQ4h2KZAGgH_P1OQCpB2XL9uRqkUVUKookGt2n3w2bt8Xz4q-1bIiWxlTNipi1JLPEv6yrVXOpFHv-o7w3qhemV1JjgbSdqdqGmJbICsTKUt9Vq7Vxi-7xsyzdk6hZs_LKVm2YIUIxvZZ6PvM_zfzL4fp1XWmC7-MaBLczmj5IsmENW8nCCmiYUu0jqQwp2kcrchZeHm6HjOErhmdtmKkEEW2jjXzqFPnDYV0axms5Atez9GqgJkefkVhJ0ariJNX0M6PUE7jM6LW790Rbt70a3nyQwf0aOg77oHbbm643s_CKtGVJ-DMpZMn62myFpJ9Ocn6hAACtx30DVG8t62735kC8sY7YyKa3i04Elm7wJb-3xChW1TY2RLvZMMJKY71O6Zb-rNbkh9bkTHzrux-y5pXbQsoKHucSsSfJEIA2up1ZG2vVk7hfMNzbn3zYMgc-GwIVG8Oro6AdHl3yqb5pHJvDhHlEeoFxIcmaPWxTk_EWOaKbquuksWCqXWaRqnw7c-HipjU2021y4c3vbSPxMyf3QknZ6DVW25KUUAp7EA9aIxWtxX7aMKEJq1vAcLgslvkE7mjxun2cpPhyeQN2NsWHImNF2_qwXI5UNJjFV37gWane6-A9V1BiGD9bG9NpWwacD3otlVdtAFLPV4DVc_sG-W9kY-ZwCmjSOIiiJA1xG2R-nEc5jTzKyzgNotwTVPheFIell4cR92Qe-6EQcRaLYN4hYGj-njKu9h1pQ9_UZqiW51Mn9Xich4WfBJ4MZeFFQeF7uR9Lr8x4RrMojUUSvarOfS-kLKYK2ag40if0dC8EwuGUSi6SzqdR7hWSBtyPUi9lAhpxKjwWwUtM8lzkPAug2Ssa_dcR3lbgv45w1o6wt__WOF___44wqapFVbii7Wq8xU1Y87wb1tp3Kv4gnhWFJWbHbkOu2zJeM23g6Q13SDPXcVybQW5NSvlB0XhZNVxRs_snMqcSwXBXWMKfyD3bSAKksMuL9vBS7liKol0psn3I2wrwBgFnK0Eh9fIy4HEWBl4k0wQXn3s8Q7eQZZLloYh5nKavlKDbvdNsjMEW6MvWzmWlYGjz2KKfF-7NsXWuEYr1894pKKoDrd2Cto9ejwDA9bHt62KIiYmHLo1hYr2dFTTqh4Avm-K1Vl2qdjOQ7Zq_HqCCwlaF3ageX2mF8tsU3shlY-aGqfnq-2v2Hmw8GrauH7Y_Xqfa_0mBFLix8jV-8yANaZbh7qSA44b1-fOfv4H-2tKRe6cgQiq8JD_Dm21LvrTKwNXTTX9Kpe2Z5bYpW0d9Ou_Iw0gbRHN_Ho3HFKZWmLYg5SlLlknkdcKD3_onb4V6N55klISnNkie2hJ2ra6exoBA72F1LYtPlbJLLiaVtUrF9yYKIlx41bwKDTkHx34jtpQhaEadXyUdCIt-0-0ofDgy_6LalWIbAlV6lGljHTadN-EDQMD6smMKKTIXXTdWxBkNfeI_-fikZUJDTuMkZJQ47BATXupnPdx8UVVjHIivFijCY0-k2OOy1QaWgsaJm14bxENuy8Y7VqE38_mwmETDr40ED17S7Yxe-U8SOcvoLl4s5OAIclim0WuQ7_rmHhWU1b8gBGv438E5E6oEQieo6BGqyC-T84hKwWkiKjwUxfwgTYU_ijrgI8BhnjgeYQGKCYvogEUUstJPBRvCZrDdEDvD_V_rykjdweu_uTO8Gl6zXXu6bSpT4fE7bOz6xa-9NlVZycL2nR9iei3r-pNE6arGGc7GU_JPvTbkAeLdmsLSwRaUcwZlJ9aIj6wRsISfxRoA3TcaK5j3XE5ck-nzWfXigD3RKznWiwdn0-vc2AFtgj09wh7BKT-IfSUbqZiRd7KrsTaUx7MjlwA2QZ5NkWeFnwVnFBin4DcRmE8Fcsbj6JSpvrbfZHOJovj8fWsmNHA7eJ3dMlkEHPtOj8LtH1kml1F2TsuE4DcRGLwQyM8skE8F0qnAPAhEdsoVKABSwRNjE5Xj2smSeePu780zpjx38h2b7b714ZSAIfFOltPXLn3t2_D6gDXGqrraPtzhtcTw_rJCvf98Qv6bWthjDqZauensUGF6RN_leaMv5jD9xDfhkW_QSOUplP8eb_xLrStgvIl1txNFnEQlClQSlv7HBB4Oq457EGDrhHc85R2LGNPKP-LN4oPWb1kn01nKD8OAvTlL0RwUExbpCxZCkOXSblviiKDMcsOq5j2mQkyYZscqs-hjTeSlyti5Y30vV7YNMve_nuFPFwenjQu5CJI4i5MAU_dFsQiLPMzZhalMLRe3Wvdy_1fij_wzCVofwrnoVb344VNlZeXaY2WcJBm9WC8KDDKCxnEkojwJAhrhk-Q0SOACGhX-Rc24rPUCB1wcZC-qBfUpxVLopygCdJ7yLC1FwrOQiaQo81nkS3ionlvB81atLtTCYeD9SmOxrrTR-0WmXfmTW_6sN-tWLRr2gJdmrZVeXzjMCwf4by_jD4o">