<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/58900>58900</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
False positive with -Wformat-nonliteral when using brace initialization
</td>
</tr>
<tr>
<th>Labels</th>
<td>
bug,
clang:frontend,
clang:diagnostics,
false-positive
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
carlosgalvezp
</td>
</tr>
</table>
<pre>
Hi,
We find that -Wformat-nonliteral does not recognize string literals if they are initialized with brace initialization. Example:
```cpp
#include <cstdio>
int main()
{
constexpr const char* fmt = "%d"; // OK
char data[100];
sprintf(data, fmt, 123);
constexpr const char* fmt2{"%d"}; // NOK
sprintf(data, fmt2, 123);
}
```
Repro: https://godbolt.org/z/Yn14aqzvb
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyFUsuO2yAU_Rq8uUqE8XvhRR4TVarUSt2MusQG21QEXMCZmXx9r50ZxdNGqoV53cu5h8NprHirvyjCDoQeCd3d-mcJnTICwsADbJ476848bIw1WgXpuAZhpQdjAzjZ2t6oqwQfnDI9vGd4UB0el2_AnQRlVFBcY5qAFxUGaBxvV9s8KGu28PTKz6OWJNmtyZCc3lo7ju87LFGm1ZOQQJJD64NQliRP60PKBDhzZQgrCaveI8X-NgH8Wmt8kK-ju82gHbgjbAfdOSDoEQhjhGViHpI94PKEDb5_XSHgCRA8cJLtY0pJdsTMe9iPqEfokMCSww4z9DzELJkpLagrxv8hxWb2d07FcU3r25rXw8LscWWE-azxmtEPOTrUdQdDCKOfX2Wp1lvRWB221vW4uuL_08Qp_329NJGs4zwvaVxkRRGJOhFVUvEoqKBlfUJXSBitx0e_yJsPHnkLXgZpYPKzmx75JJqcrv-ihFhTs23tGRdaXz6GDV7gl2xR9pPyfpIeJ1lZURoNNaUsKXlH0yQvyrLqSpbyKk27tChpmeVppHkjta_xdVHwZuoX9Q-zMVrNTY_FO2dNkEb8GxGK98b6oFp_D3azAJsPAeb97BipmlHG4phWcRmzrNimeRE3tEop7USaVglJqUQn6-18oVn0yNXL3ZCSx6BWPvh7kHuveiPlwhvx-RQG6-qWO219z_VFXsdoEaNelPgDeKsyiQ">