From: Bartosz Golaszewski > Sent: 22 October 2024 08:30 > > On Tue, Oct 22, 2024 at 9:15 AM Jiri Slaby <jirislaby@xxxxxxxxxx> wrote: > > > > On 21. 10. 24, 12:04, Bartosz Golaszewski wrote: > > > From: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx> > > > > > > The output of ".%03u" with the unsigned int in range [0, 4294966295] may > > > get truncated if the target buffer is not 12 bytes. > > > > Perhaps, if you elaborate on how 'remainder' can become > 999? > > > > Yeah, I guess it can't. Not sure what we do about such false > positives, do we have some common way to suppress them? The only way I've found is to 'launder' the buffer size using OPTIMISER_HIDE_VAR(). Although I can imagine an update to gcc that checks sizeof (buffer) as well - so that would also need laundering. You actually want: #define OPTIMER_HIDE_VAL(x) \ ({ __auto_type _x = x; OPTIMER_HIDE_VAR(_x); _x;}) so you can do: snprintf(OPTIMISER_HIDE_VAL(buffer), OPTOMISER_HIDE_VAL(sizeof buffer), fmt, ...) Perhaps that could be snprint_truncate() ? David - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)