Date: Tue, 6 Sep 2022 14:21:52 +0200 From: Gabriel Ravier <gabravier@...il.com> To: musl@...ts.openwall.com, Joakim Sindholt <opensource@...sha.com> Subject: Re: ecvt(0, 0, ...) is broken On 9/6/22 14:13, Joakim Sindholt wrote: > On Tue, 6 Sep 2022 12:12:48 +0200, Gabriel Ravier <gabravier@...il.com> wrote: >> Executing ecvt(0, 0, &decpt, &sign) results in musl returning >> "000000000000000". >> >> This seems highly likely to be a bug considering that glibc returns "" >> and I see no plausible reasoning for musl's behavior that could be >> justified by the standard. > POSIX.1-2001 said: >> The ecvt() function shall convert value to a null-terminated string of >> ndigit digits (where ndigit is reduced to an unspecified limit >> determined by the precision of a double) and return a pointer to the >> string. The high-order digit shall be non-zero, unless the value is 0. > The first part would imply that ndigit=0 should return the string "" but > the second part makes no provision for a zero-digit-long string. > I would say ndigit=0 is UB. Wouldn't that then mean that any request call of fcvt with a small ndigits but very small value that isn't 0, as in my previous email, would also be UB (since if my logic is correct, the string cannot start with a 0 but it also cannot start with any other value, which forces it to be empty) ? That seems rather excessive...
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.