On 2019-03-19, at 16:07:32 +0100, Julius Niedworok wrote: > On 11.03.2019 15:52, Jeremy Sowden wrote: > > It's the value that matters, not the type. It will only be too big > > for the buffer if the result of casting local->force_tx_status to > > int is less than -9 or greeater than 99. > > > > scnprintf(buf, size(buf), "%lld\n", > > (long long)local->force_tx_status) > > > > would also be fine if the value were in range. Note also that > > scnprintf will not overrun the buffer: it will truncate the string. > > Thanks for the clarification :) You're welcome. :) > > As it happens, arguments to variadic functions are subject to the > > "default argument promotions," so if local->force_tx_status is in > > fact a bool (I can't find the definition), it would be promoted to > > int and the cast is superfluous. > > Yes - the cast is superfluous. We still think it might be useful to > keep it there to make the point that the value will be casted. > However, if you prefer to omit the cast, we are happy to take it out. If I were maintaining this code, I'd probably take it out. However, I did have to check the documentation to verify that the cast wasn't required, and I know the more obscure corners of the C standard pretty well, so it may cause less confusion to keep it. J.