From ab396e07cc7c6aff0723d406f3037b24645b6049 Mon Sep 17 00:00:00 2001 From: Mark Dickinson Date: Wed, 16 Jul 2008 11:04:17 +0000 Subject: Issue #3360: Fix incorrect parsing of '020000000000.0'. This is a backport of r65005. --- Lib/test/test_compile.py | 4 ++++ Misc/NEWS | 3 +++ Python/ast.c | 11 +---------- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/Lib/test/test_compile.py b/Lib/test/test_compile.py index 0aba1c2..79127eb 100644 --- a/Lib/test/test_compile.py +++ b/Lib/test/test_compile.py @@ -209,6 +209,10 @@ if 1: self.assertEqual(eval("000000000000007"), 7) self.assertEqual(eval("000000000000008."), 8.) self.assertEqual(eval("000000000000009."), 9.) + self.assertEqual(eval("020000000000.0"), 20000000000.0) + self.assertEqual(eval("037777777777e0"), 37777777777.0) + self.assertEqual(eval("01000000000000000000000.0"), + 1000000000000000000000.0) def test_unary_minus(self): # Verify treatment of unary minus on negative numbers SF bug #660455 diff --git a/Misc/NEWS b/Misc/NEWS index fa9c9a6..25ac14e 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -12,6 +12,9 @@ What's New in Python 2.5.3? Core and builtins ----------------- +- Issue #3360: Fix incorrect parsing of '020000000000.0', which + produced a ValueError instead of giving the correct float. + - Issue #3242: Fix a crash inside the print statement, if sys.stdout is set to a custom object whose write() method happens to install another file in sys.stdout. diff --git a/Python/ast.c b/Python/ast.c index 057b64d..434236b 100644 --- a/Python/ast.c +++ b/Python/ast.c @@ -3067,16 +3067,7 @@ parsenumber(const char *s) #endif if (*end == 'l' || *end == 'L') return PyLong_FromString((char *)s, (char **)0, 0); - if (s[0] == '0') { - x = (long) PyOS_strtoul((char *)s, (char **)&end, 0); - if (x < 0 && errno == 0) { - return PyLong_FromString((char *)s, - (char **)0, - 0); - } - } - else - x = PyOS_strtol((char *)s, (char **)&end, 0); + x = PyOS_strtol((char *)s, (char **)&end, 0); if (*end == '\0') { if (errno != 0) return PyLong_FromString((char *)s, (char **)0, 0); -- cgit v0.12