On 2019-03-19, at 16:07:32 +0100, Julius Niedworok wrote:
On 11.03.2019 15:52, Jeremy Sowden wrote:
quoted
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. :)
quoted
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.