mirror of https://github.com/python/cpython
Issue2681: the literal 0o8 was wrongly accepted, and evaluated as float(0.0).
This happened only when 8 is the first digit. Credits go to Lukas Meuser.
This commit is contained in:
parent
11034c6c16
commit
5216721a53
|
@ -183,7 +183,7 @@ if 1:
|
||||||
for arg in ["077787", "0xj", "0x.", "0e", "090000000000000",
|
for arg in ["077787", "0xj", "0x.", "0e", "090000000000000",
|
||||||
"080000000000000", "000000000000009", "000000000000008",
|
"080000000000000", "000000000000009", "000000000000008",
|
||||||
"0b42", "0BADCAFE", "0o123456789", "0b1.1", "0o4.2",
|
"0b42", "0BADCAFE", "0o123456789", "0b1.1", "0o4.2",
|
||||||
"0b101j2", "0o153j2", "0b100e1", "0o777e1"]:
|
"0b101j2", "0o153j2", "0b100e1", "0o777e1", "0o8", "0o78"]:
|
||||||
self.assertRaises(SyntaxError, eval, arg)
|
self.assertRaises(SyntaxError, eval, arg)
|
||||||
|
|
||||||
self.assertEqual(eval("0777"), 511)
|
self.assertEqual(eval("0777"), 511)
|
||||||
|
|
|
@ -12,6 +12,9 @@ What's New in Python 2.6 alpha 3?
|
||||||
Core and builtins
|
Core and builtins
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
- Issue #2681: The octal literal ``0o8`` was incorrecly acctepted. Now it
|
||||||
|
properly raises a SyntaxError.
|
||||||
|
|
||||||
- Patch #2617: Reserved -J and -X arguments for Jython, IronPython and other
|
- Patch #2617: Reserved -J and -X arguments for Jython, IronPython and other
|
||||||
implementations of Python.
|
implementations of Python.
|
||||||
|
|
||||||
|
|
|
@ -1351,7 +1351,7 @@ tok_get(register struct tok_state *tok, char **p_start, char **p_end)
|
||||||
else if (c == 'o' || c == 'O') {
|
else if (c == 'o' || c == 'O') {
|
||||||
/* Octal */
|
/* Octal */
|
||||||
c = tok_nextc(tok);
|
c = tok_nextc(tok);
|
||||||
if (c < '0' || c > '8') {
|
if (c < '0' || c >= '8') {
|
||||||
tok->done = E_TOKEN;
|
tok->done = E_TOKEN;
|
||||||
tok_backup(tok, c);
|
tok_backup(tok, c);
|
||||||
return ERRORTOKEN;
|
return ERRORTOKEN;
|
||||||
|
|
Loading…
Reference in New Issue