[llvm] r313063 - [sancov] coverage-report-server.py: ServerHandler(): open file as UTF8
Roman Lebedev via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 12 11:59:21 PDT 2017
Author: lebedevri
Date: Tue Sep 12 11:59:21 2017
New Revision: 313063
URL: http://llvm.org/viewvc/llvm-project?rev=313063&view=rev
Log:
[sancov] coverage-report-server.py: ServerHandler(): open file as UTF8
Summary:
This is nessesary in Python3. Everywhere else we assume that
encoding is UTF8. If we don't specify it here, the defaults
from the environment will be used, which may result in ASCII
decoder being used. And if the file is non-ASCII, then it
will crash:
```
File "/usr/local/bin/coverage-report-server.py", line 168, in do_GET
for line_no, line in enumerate(f, start=1)])
File "/usr/local/bin/coverage-report-server.py", line 165, in <listcomp>
["<span class='{cls}'>{line} </span>".format(
File "/usr/lib/python3.5/encodings/ascii.py", line 26, in decode
return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 106: ordinal not in range(128)
```
Fixes https://bugs.llvm.org/show_bug.cgi?id=33548
Now, how would i add a testcase here?
Reviewers: m.ostapenko, kcc
Reviewed By: kcc
Subscribers: kcc, llvm-commits
Tags: #sanitizers
Differential Revision: https://reviews.llvm.org/D37661
Modified:
llvm/trunk/tools/sancov/coverage-report-server.py
Modified: llvm/trunk/tools/sancov/coverage-report-server.py
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/sancov/coverage-report-server.py?rev=313063&r1=313062&r2=313063&view=diff
==============================================================================
--- llvm/trunk/tools/sancov/coverage-report-server.py (original)
+++ llvm/trunk/tools/sancov/coverage-report-server.py Tue Sep 12 11:59:21 2017
@@ -160,7 +160,7 @@ class ServerHandler(http.server.BaseHTTP
linemap = self.symcov_data.compute_linemap(filename)
- with open(filepath, 'r') as f:
+ with open(filepath, 'r', encoding='utf8') as f:
content = "\n".join(
["<span class='{cls}'>{line} </span>".format(
line=html.escape(line.rstrip()),
More information about the llvm-commits
mailing list