Patch 1280, by Alexandre Vassalotti.
Make PyString's indexing and iteration return integers.
(I changed a few of Alexandre's decisions -- GvR.)
diff --git a/Lib/sre_parse.py b/Lib/sre_parse.py
index 22e762b..bf3e23f 100644
--- a/Lib/sre_parse.py
+++ b/Lib/sre_parse.py
@@ -189,12 +189,18 @@
if self.index >= len(self.string):
self.next = None
return
- char = self.string[self.index]
- if char[0] == "\\":
+ char = self.string[self.index:self.index+1]
+ # Special case for the str8, since indexing returns a integer
+ # XXX This is only needed for test_bug_926075 in test_re.py
+ if isinstance(self.string, str8):
+ char = chr(char)
+ if char == "\\":
try:
c = self.string[self.index + 1]
except IndexError:
raise error("bogus escape (end of line)")
+ if isinstance(self.string, str8):
+ char = chr(c)
char = char + c
self.index = self.index + len(char)
self.next = char