SF #926075: Fixed the bug that returns a wrong pattern object for
a string or unicode object in sre.compile() when a different type
pattern with the same value exists.
diff --git a/Lib/sre.py b/Lib/sre.py
index ffe2bc3..0ff70dc 100644
--- a/Lib/sre.py
+++ b/Lib/sre.py
@@ -215,7 +215,8 @@
def _compile(*key):
# internal: compile pattern
- p = _cache.get(key)
+ cachekey = (type(key[0]),) + key
+ p = _cache.get(cachekey)
if p is not None:
return p
pattern, flags = key
@@ -229,7 +230,7 @@
raise error, v # invalid expression
if len(_cache) >= _MAXCACHE:
_cache.clear()
- _cache[key] = p
+ _cache[cachekey] = p
return p
def _compile_repl(*key):
diff --git a/Misc/NEWS b/Misc/NEWS
index 2fb6023..b713316 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -303,6 +303,10 @@
Library
-------
+- Bug #926075: Fixed a bug that returns a wrong pattern object
+ for a string or unicode object in sre.compile() when a different
+ type pattern with the same value exists.
+
- Added countcallers arg to trace.Trace class (--trackcalls command line arg
when run from the command prompt).