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).