Commit 60773392 authored by R David Murray's avatar R David Murray

#17341: Include name in re error message about invalid group name.

Patch by Jason Michalski.
parent ff99e414
......@@ -549,7 +549,8 @@ def _parse(source, state):
if not name:
raise error("missing group name")
if not isname(name):
raise error, "bad character in group name"
raise error("bad character in group name %r" %
name)
elif sourcematch("="):
# named backreference
name = ""
......@@ -563,7 +564,8 @@ def _parse(source, state):
if not name:
raise error("missing group name")
if not isname(name):
raise error, "bad character in group name"
raise error("bad character in backref group name "
"%r" % name)
gid = state.groupdict.get(name)
if gid is None:
raise error, "unknown group name"
......
......@@ -2,6 +2,7 @@ from test.test_support import verbose, run_unittest, import_module
from test.test_support import precisionbigmemtest, _2G, cpython_only
import re
from re import Scanner
import sre_constants
import sys
import string
import traceback
......@@ -886,6 +887,16 @@ class ReTests(unittest.TestCase):
self.assertRaises(OverflowError, re.compile, r".{,%d}" % MAXREPEAT)
self.assertRaises(OverflowError, re.compile, r".{%d,}?" % MAXREPEAT)
def test_backref_group_name_in_exception(self):
# Issue 17341: Poor error message when compiling invalid regex
with self.assertRaisesRegexp(sre_constants.error, '<foo>'):
re.compile('(?P=<foo>)')
def test_group_name_in_exception(self):
# Issue 17341: Poor error message when compiling invalid regex
with self.assertRaisesRegexp(sre_constants.error, '\?foo'):
re.compile('(?P<?foo>)')
def run_re_tests():
from test.re_tests import tests, SUCCEED, FAIL, SYNTAX_ERROR
......
......@@ -674,6 +674,7 @@ Carl Meyer
Mike Meyer
Piotr Meyer
Steven Miale
Jason Michalski
Trent Mick
Tom Middleton
Stan Mihai
......
......@@ -25,6 +25,9 @@ Core and Builtins
Library
-------
- Issue #17341: Include the invalid name in the error messages from re about
invalid group names.
- Issue #17016: Get rid of possible pointer wraparounds and integer overflows
in the re module. Patch by Nickolai Zeldovich.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment