]> git.saurik.com Git - apple/libc.git/blobdiff - gdtoa/FreeBSD/gdtoa-strtoIg.c
Libc-594.1.4.tar.gz
[apple/libc.git] / gdtoa / FreeBSD / gdtoa-strtoIg.c
index a7668134dea2529dd27342e6cfbc26ab7f4d9c5e..90c88db3283d021f73e47707a0a832c14119ced2 100644 (file)
@@ -26,14 +26,8 @@ THIS SOFTWARE.
 
 ****************************************************************/
 
-/* Please send bug reports to
-       David M. Gay
-       Bell Laboratories, Room 2C-463
-       600 Mountain Avenue
-       Murray Hill, NJ 07974-0636
-       U.S.A.
-       dmg@bell-labs.com
- */
+/* Please send bug reports to David M. Gay (dmg at acm dot org,
+ * with " at " changed at "@" and " dot " changed to ".").     */
 
 #include "gdtoaimp.h"
 
@@ -67,12 +61,16 @@ strtoIg(CONST char *s00, char **se, FPI *fpi, Long *exp, Bigint **B, int *rvp)
        if (rv & STRTOG_Inexlo) {
                swap = 0;
                b1 = increment(b1);
-               if (fpi->sudden_underflow
-                && (rv & STRTOG_Retmask) == STRTOG_Zero) {
-                       b1->x[0] = 0;
-                       b1->x[nw1] = 1L << nb11;
-                       rv1 += STRTOG_Normal - STRTOG_Zero;
-                       rv1 &= ~STRTOG_Underflow;
+               if ((rv & STRTOG_Retmask) == STRTOG_Zero) {
+                       if (fpi->sudden_underflow) {
+                               b1->x[0] = 0;
+                               b1->x[nw1] = 1L << nb11;
+                               rv1 += STRTOG_Normal - STRTOG_Zero;
+                               rv1 &= ~STRTOG_Underflow;
+                               goto swapcheck;
+                               }
+                       rv1 &= STRTOG_Inexlo | STRTOG_Underflow | STRTOG_Zero;
+                       rv1 |= STRTOG_Inexhi | STRTOG_Denormal;
                        goto swapcheck;
                        }
                if (b1->wds > nw