diff options
| author | dgp <dgp@users.sourceforge.net> | 2017-06-26 20:14:14 (GMT) |
|---|---|---|
| committer | dgp <dgp@users.sourceforge.net> | 2017-06-26 20:14:14 (GMT) |
| commit | 2ebce7dad7450b8e2aea2fee20a5e7d79e14389b (patch) | |
| tree | 4f470087b84a3d440f21ac47f3f1f9df96a57cd9 /generic/tclStrToD.c | |
| parent | a8960a08767b386796ff04d9412f0868ff617295 (diff) | |
| parent | 45cf14ed033166ae5e6bdd6e2e7fcc949a0d70da (diff) | |
| download | tcl-2ebce7dad7450b8e2aea2fee20a5e7d79e14389b.zip tcl-2ebce7dad7450b8e2aea2fee20a5e7d79e14389b.tar.gz tcl-2ebce7dad7450b8e2aea2fee20a5e7d79e14389b.tar.bz2 | |
merge trunk
Diffstat (limited to 'generic/tclStrToD.c')
| -rw-r--r-- | generic/tclStrToD.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/generic/tclStrToD.c b/generic/tclStrToD.c index 57c24ac..a5d1f30 100644 --- a/generic/tclStrToD.c +++ b/generic/tclStrToD.c @@ -482,7 +482,7 @@ TclParseNumber( { enum State { INITIAL, SIGNUM, ZERO, ZERO_X, - ZERO_O, ZERO_B, BINARY, + ZERO_O, ZERO_B, ZERO_D, BINARY, HEXADECIMAL, OCTAL, BAD_OCTAL, DECIMAL, LEADING_RADIX_POINT, FRACTION, EXPONENT_START, EXPONENT_SIGNUM, EXPONENT, @@ -664,6 +664,10 @@ TclParseNumber( state = ZERO_O; break; } + if (c == 'd' || c == 'D') { + state = ZERO_D; + break; + } #ifdef TCL_NO_DEPRECATED goto decimal; #endif @@ -880,6 +884,16 @@ TclParseNumber( state = BINARY; break; + case ZERO_D: + if (c == '0') { + numTrailZeros++; + } else if ( ! isdigit(UCHAR(c))) { + goto endgame; + } + state = DECIMAL; + flags |= TCL_PARSE_INTEGER_ONLY; + /* FALLTHROUGH */ + case DECIMAL: /* * Scanned an optional + or - followed by a string of decimal @@ -1176,6 +1190,7 @@ TclParseNumber( case ZERO_X: case ZERO_O: case ZERO_B: + case ZERO_D: case LEADING_RADIX_POINT: case EXPONENT_START: case EXPONENT_SIGNUM: |
