diff options
author | Tim Peters <tim.peters@gmail.com> | 2001-08-27 19:19:28 +0000 |
---|---|---|
committer | Tim Peters <tim.peters@gmail.com> | 2001-08-27 19:19:28 +0000 |
commit | 9aa70d93aae89a9404a58f32f3fcd3c72b1ee56b (patch) | |
tree | 1ce75d8726e760f3f47d60503bdb9eefd4227a42 /Parser | |
parent | de1d4957c0bb4d920f130cd809bff865b3ef3c48 (diff) | |
download | cpython-git-9aa70d93aae89a9404a58f32f3fcd3c72b1ee56b.tar.gz |
SF bug [#455775] float parsing discrepancy.
PyTokenizer_Get: error if exponent contains no digits (3e, 2.0e+, ...).
Diffstat (limited to 'Parser')
-rw-r--r-- | Parser/tokenizer.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/Parser/tokenizer.c b/Parser/tokenizer.c index 2397969004..7270629b19 100644 --- a/Parser/tokenizer.c +++ b/Parser/tokenizer.c @@ -756,9 +756,7 @@ PyTokenizer_Get(register struct tok_state *tok, char **p_start, if (c == 'l' || c == 'L') c = tok_nextc(tok); else { - /* Accept floating point numbers. - XXX This accepts incomplete things like - XXX 12e or 1e+; worry run-time */ + /* Accept floating point numbers. */ if (c == '.') { fraction: /* Fraction */ @@ -771,9 +769,14 @@ PyTokenizer_Get(register struct tok_state *tok, char **p_start, c = tok_nextc(tok); if (c == '+' || c == '-') c = tok_nextc(tok); - while (isdigit(c)) { - c = tok_nextc(tok); + if (!isdigit(c)) { + tok->done = E_TOKEN; + tok_backup(tok, c); + return ERRORTOKEN; } + do { + c = tok_nextc(tok); + } while (isdigit(c)); } #ifndef WITHOUT_COMPLEX if (c == 'j' || c == 'J') |