From: Paul Eggert Date: Mon, 11 Mar 2019 23:40:29 +0000 (-0700) Subject: strtod: fix clash with strtold X-Git-Tag: v1.0~5032 X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=3bd82a82cf4ba693d2c31c7b95aaec4e56dc92a4;p=gnulib.git strtod: fix clash with strtold Problem reported for RHEL 5 by Jesse Caldwell (Bug#34817). * lib/strtod.c (compute_minus_zero, minus_zero): Simplify by remving the macro / external variable, and having just a function. User changed. This avoids the need for an external variable that might clash. --- diff --git a/ChangeLog b/ChangeLog index b633380b5c..e5ba0caa4b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2019-03-11 Paul Eggert + + strtod: fix clash with strtold + Problem reported for RHEL 5 by Jesse Caldwell (Bug#34817). + * lib/strtod.c (compute_minus_zero, minus_zero): + Simplify by remving the macro / external variable, + and having just a function. User changed. This avoids + the need for an external variable that might clash. + 2019-03-10 Bruno Haible alloca-opt: Fix conflict mingw's new file. diff --git a/lib/strtod.c b/lib/strtod.c index b9eaa51b48..69b1564e11 100644 --- a/lib/strtod.c +++ b/lib/strtod.c @@ -294,16 +294,15 @@ parse_number (const char *nptr, ICC 10.0 has a bug when optimizing the expression -zero. The expression -MIN * MIN does not work when cross-compiling to PowerPC on Mac OS X 10.5. */ -#if defined __hpux || defined __sgi || defined __ICC static DOUBLE -compute_minus_zero (void) +minus_zero (void) { +#if defined __hpux || defined __sgi || defined __ICC return -MIN * MIN; -} -# define minus_zero compute_minus_zero () #else -DOUBLE minus_zero = -0.0; + return -0.0; #endif +} /* Convert NPTR to a DOUBLE. If ENDPTR is not NULL, a pointer to the character after the last one used in the number is put in *ENDPTR. */ @@ -479,6 +478,6 @@ STRTOD (const char *nptr, char **endptr) /* Special case -0.0, since at least ICC miscompiles negation. We can't use copysign(), as that drags in -lm on some platforms. */ if (!num && negative) - return minus_zero; + return minus_zero (); return negative ? -num : num; }