summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Dickinson <dickinsm@gmail.com>2009-01-20 20:45:53 (GMT)
committerMark Dickinson <dickinsm@gmail.com>2009-01-20 20:45:53 (GMT)
commit9ffc0205a62972fa8faaf2d4577d3a3efaeb80d9 (patch)
tree15f9a3c2658cdbe9a1e36101b379a7c6d4620be4
parent8dd05147d6224f4982ef6b14d904bb600ef33ea3 (diff)
downloadcpython-9ffc0205a62972fa8faaf2d4577d3a3efaeb80d9.zip
cpython-9ffc0205a62972fa8faaf2d4577d3a3efaeb80d9.tar.gz
cpython-9ffc0205a62972fa8faaf2d4577d3a3efaeb80d9.tar.bz2
Issue 4842, patch 2/2: int('3L') should be invalid in Python 3.x.
-rw-r--r--Lib/test/test_long.py10
-rw-r--r--Misc/NEWS3
-rw-r--r--Objects/longobject.c2
3 files changed, 13 insertions, 2 deletions
diff --git a/Lib/test/test_long.py b/Lib/test/test_long.py
index ed8c886..c1f8b5c 100644
--- a/Lib/test/test_long.py
+++ b/Lib/test/test_long.py
@@ -284,6 +284,16 @@ class LongTest(unittest.TestCase):
self.assertRaises(ValueError, int, '123\0')
self.assertRaises(ValueError, int, '53', 40)
+ # trailing L should no longer be accepted...
+ self.assertRaises(ValueError, int, '123L')
+ self.assertRaises(ValueError, int, '123l')
+ self.assertRaises(ValueError, int, '0L')
+ self.assertRaises(ValueError, int, '-37L')
+ self.assertRaises(ValueError, int, '0x32L', 16)
+ self.assertRaises(ValueError, int, '1L', 21)
+ # ... but it's just a normal digit if base >= 22
+ self.assertEqual(int('1L', 22), 43)
+
self.assertRaises(TypeError, int, 1, 12)
# SF patch #1638879: embedded NULs were not detected with
diff --git a/Misc/NEWS b/Misc/NEWS
index d20d20b..9ffe6be 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,9 @@ What's New in Python 3.1 alpha 0
Core and Builtins
-----------------
+- Issue #4842: Don't allow trailing 'L' when constructing an integer
+ from a string.
+
- Issue #4991: os.fdopen now raises an OSError for invalid file descriptors.
- Issue #4838: When a module is deallocated, free the memory backing the
diff --git a/Objects/longobject.c b/Objects/longobject.c
index b7ba796..46efe5f 100644
--- a/Objects/longobject.c
+++ b/Objects/longobject.c
@@ -1990,8 +1990,6 @@ digit beyond the first.
goto onError;
if (sign < 0)
Py_SIZE(z) = -(Py_SIZE(z));
- if (*str == 'L' || *str == 'l')
- str++;
while (*str && isspace(Py_CHARMASK(*str)))
str++;
if (*str != '\0')