fix incorrect use of fabs on long double operand in floatscan.c
authorRich Felker <dalias@aerifal.cx>
Fri, 18 Oct 2019 23:56:53 +0000 (19:56 -0400)
committerRich Felker <dalias@aerifal.cx>
Sat, 19 Oct 2019 00:52:18 +0000 (20:52 -0400)
commitbff78954995b115e469aadb7636357798978fffd
treed8f00a4edb17231a70ae580e041197a609e04e00
parent2d3083e746cf314c16048875e919305b1018bf8b
fix incorrect use of fabs on long double operand in floatscan.c

based on patch by Dan Gohman, who caught this via compiler warnings.
analysis by Szabolcs Nagy determined that it's a bug, whereby errno
can be set incorrectly for values where the coercion from long double
to double causes rounding. it seems likely that floating point status
flags may be set incorrectly as a result too.

at the same time, clean up use of preprocessor concatenation involving
LDBL_MANT_DIG, which spuriously depends on it being a single unadorned
decimal integer literal, and instead use the equivalent formulation
2/LDBL_EPSILON. an equivalent change on the printf side was made in
commit bff6095d915f3e41206e47ea2a570ecb937ef926.
src/internal/floatscan.c