File tcl-SafeLdExp.patch of Package tcl

? NSK1200002852A
Index: generic/tclStrToD.c
===================================================================
RCS file: /cvsroot/tcl/tcl/generic/tclStrToD.c,v
retrieving revision 1.39
diff -u -r1.39 tclStrToD.c
--- generic/tclStrToD.c	7 Dec 2009 17:15:33 -0000	1.39
+++ generic/tclStrToD.c	19 Feb 2010 02:42:35 -0000
@@ -110,7 +110,6 @@
 static int mantBits;		/* Number of bits in a double's significand */
 static mp_int pow5[9];		/* Table of powers of 5**(2**n), up to
 				 * 5**256 */
-static double tiny;		/* The smallest representable double */
 static int maxDigits;		/* The maximum number of digits to the left of
 				 * the decimal point of a double. */
 static int minDigits;		/* The maximum number of digits to the right
@@ -1490,8 +1489,8 @@
 	goto returnValue;
     }
     retval = SafeLdExp(retval, machexp);
-    if (retval < tiny) {
-	retval = tiny;
+    if (retval == 0.0) {
+	retval = SafeLdExp(1.0, DBL_MIN_EXP * log2FLT_RADIX - mantBits);
     }
 
     /*
@@ -2245,7 +2244,6 @@
      * the significand of a double.
      */
 
-    tiny = SafeLdExp(1.0, DBL_MIN_EXP * log2FLT_RADIX - mantBits);
     maxDigits = (int) ((DBL_MAX_EXP * log((double) FLT_RADIX)
 	    + 0.5 * log(10.)) / log(10.));
     minDigits = (int) floor((DBL_MIN_EXP - DBL_MANT_DIG)
openSUSE Build Service is sponsored by