mirror of https://github.com/python/cpython
Fix for next iteration of SF bug 115690 (Unicode headaches in IDLE). The
parsing functions in support of auto-indent weren't expecting Unicode strings, but text.get() can now return them (although it remains muddy as to exactly when or why that can happen). Fixed that with a Big Hammer.
This commit is contained in:
parent
0a84a338f9
commit
f2fba87dcc
|
@ -113,6 +113,19 @@ class Parser:
|
||||||
|
|
||||||
def set_str(self, str):
|
def set_str(self, str):
|
||||||
assert len(str) == 0 or str[-1] == '\n'
|
assert len(str) == 0 or str[-1] == '\n'
|
||||||
|
if type(str) == type(u""):
|
||||||
|
# The parse functions have no idea what to do with Unicode, so
|
||||||
|
# replace all Unicode characters with "x". This is "safe"
|
||||||
|
# so long as the only characters germane to parsing the structure
|
||||||
|
# of Python are 7-bit ASCII. It's *necessary* because Unicode
|
||||||
|
# strings don't have a .translate() method that supports
|
||||||
|
# deletechars.
|
||||||
|
uniphooey = str
|
||||||
|
str = []
|
||||||
|
push = str.append
|
||||||
|
for raw in map(ord, uniphooey):
|
||||||
|
push(raw < 127 and chr(raw) or "x")
|
||||||
|
str = "".join(str)
|
||||||
self.str = str
|
self.str = str
|
||||||
self.study_level = 0
|
self.study_level = 0
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue