--- a/mercurial/hgweb/request.py Thu Jun 25 03:10:13 2020 +0200
+++ b/mercurial/hgweb/request.py Thu Jun 25 03:46:07 2020 +0200
@@ -12,6 +12,7 @@
from ..thirdparty import attr
from .. import (
+ encoding,
error,
pycompat,
util,
@@ -162,10 +163,18 @@
# strings on Python 3 must be between \00000-\000FF. We deal with bytes
# in Mercurial, so mass convert string keys and values to bytes.
if pycompat.ispy3:
+
def tobytes(s):
if not isinstance(s, str):
return s
- return s.encode('latin-1')
+ if pycompat.iswindows:
+ # This is what mercurial.encoding does for os.environ on
+ # Windows.
+ return encoding.strtolocal(s)
+ else:
+ # This is what is documented to be used for os.environ on Unix.
+ return pycompat.fsencode(s)
+
env = {tobytes(k): tobytes(v) for k, v in pycompat.iteritems(env)}
# Some hosting solutions are emulating hgwebdir, and dispatching directly