On 3/11/23 22:52, Paul Eggert wrote: > On 2023-03-11 13:31, Alejandro Colomar wrote: >> What's this &dummy exactly for? > > It avoids undefined behavior. A call like strftime (buf, sizeof buf, > "XXX", NULL) has undefined behavior, as near as I can make out.
Ahh, sure, it makes sense. Didn't consider that. > It's OK > that the dummy is uninitialized. It's not so trivial to arrive to this conclusion. If the function is not allowed to dereference the pointer if the fmt string doesn't require it, then NULL should be allowed. If the function is allowed to dereference, then NULL is not allowed, but if the values are uninitialized, then reading any of them should also trigger UB, no? Unless the standard specifically allows us to do so, but I can't find anything clear. Maybe it would be safer to bzero(3) it. What do you think? -- <http://www.alejandro-colomar.es/> GPG key fingerprint: A9348594CE31283A826FBDD8D57633D441E25BB5
OpenPGP_signature
Description: OpenPGP digital signature