<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__

__Fails when set to Right__

__Suceeds when set to None__

```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

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">