diff --git a/Lib/test/re_tests.py b/Lib/test/re_tests.py index 7c5dc890d91..d69b324c54b 100755 --- a/Lib/test/re_tests.py +++ b/Lib/test/re_tests.py @@ -638,6 +638,8 @@ (r'(?i)[m]+', 'MMM', SUCCEED, 'found', 'MMM'), # bug 130748: ^* should be an error (nothing to repeat) (r'^*', '', SYNTAX_ERROR), + # bug 133283: minimizing repeat bug + (r'"(?:\\"|[^"])*?"', r'"\""', SUCCEED, 'found', r'"\"'), ] try: diff --git a/Lib/test/test_sre.py b/Lib/test/test_sre.py index f133c988f00..e266d14d5ef 100644 --- a/Lib/test/test_sre.py +++ b/Lib/test/test_sre.py @@ -245,7 +245,7 @@ def bump_num(matchobj): # implementation of repeated groups. test("sre.match('(x)*', 50000*'x').span()", (0, 50000), RuntimeError) test("sre.match(r'(x)*y', 50000*'x'+'y').span()", (0, 50001), RuntimeError) -test("sre.match(r'(x)*?y', 50000*'x'+'y').span()", (0, 50001), RuntimeError) +test("sre.match(r'(x)*?y', 50000*'x'+'y').span()", (0, 50001)) from re_tests import * diff --git a/Modules/_sre.c b/Modules/_sre.c index 16629bc2eb9..910e51f4fcf 100644 --- a/Modules/_sre.c +++ b/Modules/_sre.c @@ -1104,7 +1104,7 @@ SRE_MATCH(SRE_STATE* state, SRE_CODE* pattern, int level) /* see if the tail matches */ state->repeat = rp->prev; /* FIXME: the following fix doesn't always work (#133283) */ - if (0 && rp->pattern[2] == 65535) { + if (rp->pattern[2] == 65535) { /* unbounded repeat */ for (;;) { i = SRE_MATCH(state, pattern, level + 1);