]> git.saurik.com Git - apple/libc.git/blobdiff - gdtoa/FreeBSD/gdtoa-strtof.c.patch
Libc-583.tar.gz
[apple/libc.git] / gdtoa / FreeBSD / gdtoa-strtof.c.patch
index 754a83a2e58ccaa8a93ad41f83242aede79990ff..6e316202ff72bf354cc25f613fd725aede6d878e 100644 (file)
@@ -1,6 +1,6 @@
---- gdtoa-strtof.c.orig        2005-01-20 20:12:37.000000000 -0800
-+++ gdtoa-strtof.c     2005-02-17 12:49:28.000000000 -0800
-@@ -29,13 +29,15 @@
+--- gdtoa-strtof.c.orig        2008-10-28 12:35:19.000000000 -0700
++++ gdtoa-strtof.c     2008-10-28 13:19:34.000000000 -0700
+@@ -29,13 +29,15 @@ THIS SOFTWARE.
  /* Please send bug reports to David M. Gay (dmg at acm dot org,
   * with " at " changed at "@" and " dot " changed to ".").    */
  
 +strtof_l(CONST char *s, char **sp, locale_t loc)
  #endif
  {
-       static FPI fpi = { 24, 1-127-24+1,  254-127-24+1, 1, SI };
-@@ -44,7 +46,8 @@
-       int k;
-       union { ULong L[1]; float f; } u;
+       static FPI fpi0 = { 24, 1-127-24+1,  254-127-24+1, 1, SI };
+@@ -49,9 +51,13 @@ strtof(CONST char *s, char **sp)
+ #define fpi &fpi0
+ #endif
  
--      k = strtodg(s, sp, &fpi, &exp, bits);
+-      k = strtodg(s, sp, fpi, &exp, bits);
 +      NORMALIZE_LOCALE(loc);
-+      k = strtodg(s, sp, &fpi, &exp, bits, loc);
++      k = strtodg(s, sp, fpi, &exp, bits, loc);
        switch(k & STRTOG_Retmask) {
          case STRTOG_NoNumber:
++              u.L[0] = 0;
++              return u.f; // avoid setting sign
++
          case STRTOG_Zero:
-@@ -71,3 +74,13 @@
+               u.L[0] = 0;
+               break;
+@@ -76,3 +82,13 @@ strtof(CONST char *s, char **sp)
                u.L[0] |= 0x80000000L;
        return u.f;
        }