summaryrefslogtreecommitdiffstats
path: root/generic/tclStrToD.c
diff options
context:
space:
mode:
authornijtmans <nijtmans>2010-05-17 21:51:21 (GMT)
committernijtmans <nijtmans>2010-05-17 21:51:21 (GMT)
commit0f67d4faac5372c251720b6f818d319392f0b868 (patch)
tree1b71d7d950b2c2ccdbf42c3a54ff2b74b55ed27f /generic/tclStrToD.c
parent15dd1944c90dfe80aaf981a1075e7a6b707abc52 (diff)
downloadtcl-0f67d4faac5372c251720b6f818d319392f0b868.zip
tcl-0f67d4faac5372c251720b6f818d319392f0b868.tar.gz
tcl-0f67d4faac5372c251720b6f818d319392f0b868.tar.bz2
Fix [Bug 2996549]: Failure in expr.test on Win32
Diffstat (limited to 'generic/tclStrToD.c')
-rwxr-xr-xgeneric/tclStrToD.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/generic/tclStrToD.c b/generic/tclStrToD.c
index 8094e87..1ee4c74 100755
--- a/generic/tclStrToD.c
+++ b/generic/tclStrToD.c
@@ -14,7 +14,7 @@
* See the file "license.terms" for information on usage and redistribution of
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tclStrToD.c,v 1.44 2010/05/03 14:36:41 nijtmans Exp $
+ * RCS: @(#) $Id: tclStrToD.c,v 1.45 2010/05/17 21:51:21 nijtmans Exp $
*
*----------------------------------------------------------------------
*/
@@ -105,6 +105,7 @@ static int log2FLT_RADIX; /* Logarithm of the floating point radix. */
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 = 0.0; /* 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
@@ -1484,8 +1485,11 @@ MakeHighPrecisionDouble(
goto returnValue;
}
retval = SafeLdExp(retval, machexp);
- if (retval <= 0.0) {
- retval = SafeLdExp(1.0, DBL_MIN_EXP * log2FLT_RADIX - mantBits);
+ if (tiny == 0.0) {
+ tiny = SafeLdExp(1.0, DBL_MIN_EXP * log2FLT_RADIX - mantBits);
+ }
+ if (retval < tiny) {
+ retval = tiny;
}
/*