summaryrefslogtreecommitdiffstats
path: root/compat
diff options
context:
space:
mode:
authordgp <dgp@noemail.net>2001-09-04 23:16:16 (GMT)
committerdgp <dgp@noemail.net>2001-09-04 23:16:16 (GMT)
commitfcaccc77c99fec4f3abaab842fda496321fcb964 (patch)
tree6f9d2e96f95f9c5f4bf15afad5f9f7573a68eb0c /compat
parent17b96ffdf4a5319dd3653f1761897ecd9188fddd (diff)
downloadtcl-fcaccc77c99fec4f3abaab842fda496321fcb964.zip
tcl-fcaccc77c99fec4f3abaab842fda496321fcb964.tar.gz
tcl-fcaccc77c99fec4f3abaab842fda496321fcb964.tar.bz2
* Fixed failure to handle expressions
like 3eq2 and failure to set errno on overflow. [Bug 440894] FossilOrigin-Name: 156fa15818515def2714eb7ed4d91990f5afd255
Diffstat (limited to 'compat')
-rw-r--r--compat/strtod.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/compat/strtod.c b/compat/strtod.c
index 744c7c8..22d8d92 100644
--- a/compat/strtod.c
+++ b/compat/strtod.c
@@ -9,7 +9,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: strtod.c,v 1.2 1998/09/14 18:39:45 stanton Exp $
+ * RCS: @(#) $Id: strtod.c,v 1.3 2001/09/04 23:16:18 dgp Exp $
*/
#include "tcl.h"
@@ -19,6 +19,7 @@
# include <stdlib.h>
#endif
#include <ctype.h>
+#include "tclPort.h"
#ifndef TRUE
#define TRUE 1
@@ -206,6 +207,10 @@ strtod(string, endPtr)
}
expSign = FALSE;
}
+ if (!isdigit(*p)) {
+ p = pExp;
+ goto done;
+ }
while (isdigit(*p)) {
exp = exp * 10 + (*p - '0');
p += 1;
@@ -232,6 +237,7 @@ strtod(string, endPtr)
}
if (exp > maxExponent) {
exp = maxExponent;
+ errno = ERANGE;
}
dblExp = 1.0;
for (d = powersOf10; exp != 0; exp >>= 1, d += 1) {