mirror of git://git.musl-libc.org/musl
fix failure of printf %g to strip trailing zeros in some cases
the code to strip trailing zeros was only looking in the last slot for up to 9 zeros, assuming that the rounding code had already removed fully-zero slots from the end. however, this ignored cases where the rounding code did not run at all, which occur when the value being printed is exactly representable in the requested precision. the simplest solution is to move the code that strips trailing zero slots to run unconditionally, immediately after rounding, rather than as the last step of rounding.
This commit is contained in:
parent
109048e031
commit
89740868c9
|
@ -363,8 +363,8 @@ static int fmt_fp(FILE *f, long double y, int w, int p, int fl, int t)
|
|||
}
|
||||
}
|
||||
if (z>d+1) z=d+1;
|
||||
for (; !z[-1] && z>a; z--);
|
||||
}
|
||||
for (; z>a && !z[-1]; z--);
|
||||
|
||||
if ((t|32)=='g') {
|
||||
if (!p) p++;
|
||||
|
|
Loading…
Reference in New Issue