|
|
@ -0,0 +1,41 @@ |
|
|
|
From 0562b040fa17f1722ba2b3096067b45d0582ca53 Mon Sep 17 00:00:00 2001 |
|
|
|
From: Paul Eggert <address@hidden> |
|
|
|
Date: Mon, 11 Mar 2019 16:40:29 -0700 |
|
|
|
Subject: [PATCH] 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. |
|
|
|
--- 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; |
|
|
|
} |