Skip to content
This repository was archived by the owner on Oct 21, 2022. It is now read-only.

Commit e2bed09

Browse files
committed
ensure things are encoded correctly when we pass them off to compile
Signed-off-by: Chris Granger <[email protected]>
1 parent f30f0f8 commit e2bed09

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

py-src/ltmain.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,12 @@ def asUnicode(s):
4646
except:
4747
return str(s)
4848

49+
def ensureUtf(s):
50+
if type(s) == unicode:
51+
return s.encode('utf8', 'ignore')
52+
else:
53+
return str(s)
54+
4955
def findLoc(body, line, total):
5056
for i in range(len(body)):
5157
if body[i].lineno == line:
@@ -184,19 +190,19 @@ def handleEval(data):
184190
loc = form[0]
185191
isEval = False
186192
try:
187-
code= compile(code, data[2]["name"], 'eval')
193+
code= compile(ensureUtf(code), ensureUtf(data[2]["name"]), 'eval')
188194
isEval = True
189195
except:
190196
try:
191-
code= compile(code, data[2]["name"], 'exec')
197+
code= compile(ensureUtf(code), ensureUtf(data[2]["name"]), 'exec')
192198
except:
193199
e = traceback.format_exc()
194200
send(data[0], "editor.eval.python.exception", {"ex": cleanTrace(e), "meta": loc})
195201
continue
196202

197203
try:
198204
if isEval:
199-
result = eval(code, module.__dict__)
205+
result = eval(ensureUtf(code), module.__dict__)
200206
send(data[0], "editor.eval.python.result", {"meta": loc, "result": asUnicode(result)})
201207
else:
202208
exec(code, module.__dict__)
@@ -254,11 +260,11 @@ def ipyEval(data):
254260
loc = form[0]
255261
isEval = False
256262
try:
257-
compile(code, data[2]["name"], 'eval')
263+
compile(ensureUtf(code), ensureUtf(data[2]["name"]), 'eval')
258264
isEval = True
259265
except:
260266
try:
261-
compile(code, data[2]["name"], 'exec')
267+
compile(ensureUtf(code), ensureUtf(data[2]["name"]), 'exec')
262268
except:
263269
e = traceback.format_exc()
264270
send(data[0], "editor.eval.python.exception", {"ex": cleanTrace(e), "meta": loc})

0 commit comments

Comments
 (0)