diff options
author | dgp <dgp@noemail.net> | 2001-09-04 23:16:16 (GMT) |
---|---|---|
committer | dgp <dgp@noemail.net> | 2001-09-04 23:16:16 (GMT) |
commit | fcaccc77c99fec4f3abaab842fda496321fcb964 (patch) | |
tree | 6f9d2e96f95f9c5f4bf15afad5f9f7573a68eb0c /compat | |
parent | 17b96ffdf4a5319dd3653f1761897ecd9188fddd (diff) | |
download | tcl-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.c | 8 |
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) { |