From 53d93adc46c73e6fdcd6db2d16f0136eadba9839 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20v=2E=20L=C3=B6wis?= Date: Sat, 19 Apr 2003 08:37:24 +0000 Subject: [PATCH] Patch #681152: Support escaped Unicode characters in classes. Fixes #612074. Will backport to 2.2. --- Lib/sre_parse.py | 2 +- Lib/test/test_sre.py | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Lib/sre_parse.py b/Lib/sre_parse.py index fdf6767367f..b85aea70a4f 100644 --- a/Lib/sre_parse.py +++ b/Lib/sre_parse.py @@ -254,7 +254,7 @@ def _class_escape(source, escape): if len(escape) != 2: raise error, "bogus escape: %s" % repr("\\" + escape) return LITERAL, atoi(escape, 16) & 0xff - elif str(escape[1:2]) in OCTDIGITS: + elif escape[1:2] in OCTDIGITS: # octal escape (up to three digits) while source.next in OCTDIGITS and len(escape) < 5: escape = escape + source.get() diff --git a/Lib/test/test_sre.py b/Lib/test/test_sre.py index e4eb08ddd71..db871620fac 100644 --- a/Lib/test/test_sre.py +++ b/Lib/test/test_sre.py @@ -96,6 +96,10 @@ def test(expression, result, exception=None): # non-simple '*?' still recurses and hits the recursion limit test(r"""sre.search('(a|b)*?c', 10000*'ab'+'cd').end(0)""", None, RuntimeError) +# bug 612074 +pat=u"["+sre.escape(u"\u2039")+u"]" +test(r"""sre.compile(pat) and 1""", 1, None) + if verbose: print 'Running tests on sre.sub'