mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
Issue #10182: The re module doesn't truncate indices to 32 bits anymore.
Patch by Serhiy Storchaka.
This commit is contained in:
commit
9a2b26748b
3 changed files with 24 additions and 6 deletions
|
@ -1,4 +1,4 @@
|
|||
from test.support import verbose, run_unittest, gc_collect
|
||||
from test.support import verbose, run_unittest, gc_collect, bigmemtest, _2G
|
||||
import io
|
||||
import re
|
||||
from re import Scanner
|
||||
|
@ -949,6 +949,21 @@ class ReTests(unittest.TestCase):
|
|||
# Test behaviour when not given a string or pattern as parameter
|
||||
self.assertRaises(TypeError, re.compile, 0)
|
||||
|
||||
# The huge memuse is because of re.sub() using a list and a join()
|
||||
# to create the replacement result.
|
||||
@bigmemtest(size=_2G, memuse=20)
|
||||
def test_large(self, size):
|
||||
# Issue #10182: indices were 32-bit-truncated.
|
||||
s = 'a' * size
|
||||
m = re.search('$', s)
|
||||
self.assertIsNotNone(m)
|
||||
self.assertEqual(m.start(), size)
|
||||
self.assertEqual(m.end(), size)
|
||||
r, n = re.subn('', '', s)
|
||||
self.assertEqual(r, s)
|
||||
self.assertEqual(n, size + 1)
|
||||
|
||||
|
||||
def run_re_tests():
|
||||
from test.re_tests import tests, SUCCEED, FAIL, SYNTAX_ERROR
|
||||
if verbose:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue