Comments
Patch
@@ -1212,8 +1212,16 @@ class ui(object):
suffix=extra['suffix'], text=True,
dir=rdir)
try:
- f = os.fdopen(fd, pycompat.sysstr("w"))
- f.write(encoding.strfromlocal(text))
+ if pycompat.ispy3:
+ # We use latin-1 as "fat bytes" so that we still get
+ # free EOL conversion on Python 3, but we avoid
+ # encode/decode problems.
+ f = os.fdopen(fd, pycompat.sysstr("w"),
+ encoding=pycompat.sysstr("latin-1"))
+ f.write(text.decode("latin-1"))
+ else:
+ f = os.fdopen(fd, pycompat.sysstr("w"))
+ f.write(text)
f.close()
environ = {'HGUSER': user}
@@ -1235,8 +1243,14 @@ class ui(object):
onerr=error.Abort, errprefix=_("edit failed"),
blockedtag='editor')
- f = open(name)
- t = encoding.strtolocal(f.read())
+ if pycompat.ispy3:
+ # See above about "fat bytes" and latin-1.
+ f = open(name, pycompat.sysstr("r"),
+ encoding=pycompat.sysstr("latin-1"))
+ t = f.read().encode("latin-1")
+ else:
+ f = open(name, pycompat.sysstr("r"))
+ t = f.read()
f.close()
finally:
os.unlink(name)