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

    <tr>
        <th>Summary</th>
        <td>
            -Wformat-truncation warning size does  not agree with the return value from snprintf
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

    <tr>
      <th>Reporter</th>
      <td>
          andrew-aitchison
      </td>
    </tr>
</table>

<pre>
    clang++-18 (version 18.0.0 (++20231104083419+83888a5404d4-1~exp1~20231104083522.106)
reports
```
format-trunc.cpp:9:12: warning: 'snprintf' will always be truncated; specified size is 16, but format string expands to at least 17 [-Wformat-truncation]
    9 | int ret = snprintf(szString,
      |                   ^
1 warning generated.
```
for the following code, but when run it prints:
```
snprintf(*, 16, fmt, ...) returns 15
```
which suggests that at least for this value the format string does fit in the given space.

```
#include <stdio.h>

int main(int argc, char*argv[])
{
        const double d = .123456789012345;

        char szString[15 + 1];
        int ret = snprintf(szString,
                                         sizeof(szString),
                                           "%#+015.10f", d);

        printf("snprintf(*, %zu, fmt, ...) returns %d\n",
                 sizeof(szString),
                   ret);

        return 0;
}
```



</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMVM2OqzoMfhp3YxUlhvCzYFHaMy9wF3cdwIVc0aRKwvScWZxnvwJmpj2ajnQqVELiz_7sfLYOwQyWuQbVgDrt9BxH52tte8-3vTaxG01wdte6_lfdTdoOQA1Qs5clApWv7INxFmWZiEQsO9sxCUqlFJko00xWQE2ZlmWpVSayPtvL3_zzKn8_GCmiRIocqAJxAnHwfHU-hu0DcvH-rJ9n5y867qOfbZd01yukhwrSgyRID3jT3ho7LEugItirNzaegQq8mWlCPd30r4At4wrXkXtIGwxX7szZcI_BvDGagDIHOmI7R9zCYYje2AH551XbPmB0qCNOrENEWSCoZv_vIzEdjbOgThtlRMQKoTiisRE9R4T0hHd2ZXj7Z_UPdLwjcEV8_YH6sRnJj3RxYMt-ySb5rmQYR8azmyZ3WwCd6_kjw9vIFv1s0URcGQVID0_9PDAGOiz4rU7nS1xeSZIAVUt-s7cBpXrq5DaabsQwDwOHGDCOOt5ruTE1AV_1NPM76ccL6B0HPJuIxq6ng3lli-GqO_7I_VlQoNTYbpp7RkiPIfbGJSOkPx4hy91ctLFA5bLUfuiWrLpRe6CD9sPr1iSfKoWi-cBXnbMhYu_mdmLs1_tNJKWZyouyEusK0uYPhqJaXOPn3atGKgRqUC5B7sbV34oGRPX4rGJ2f1pW3xojAhGQAkqBGiFVIsV53TpivwC_sH_QAn1VBpB6m78XB5DqQR3tFuGR0t_QRlwcPWW1BUBxPylOzyXx8L_r67Sv0krvuJZ5VcmqzCnfjXWRt1V1zrOOSLGktJAqZ521LbXnvCz1ztTvY0xJlRYiS6RolZatKJk5q0QBmeCLNlMyTa-XxPlhZ0KYuS5kSmI36ZansE5fIss3XA-XoqjTztcLZt_OQ4BMTCbEcPcSTZy4fjJ1PofCOsvWfkHrIurBM-PNxHFtnPc6bX129u7yKa3d7Kd6jPG6zgF6AXoZTBznNuncBehlofD-2l-9-4-7CPSyEg9AL2ti_wcAAP__7EPTBg">