[PATCH 2 of 3 STABLE v2] py3: decode encoding literal before passing to .decode()

Denis Laxalde denis at laxalde.org
Fri Oct 25 08:53:54 EDT 2019


# HG changeset patch
# User Denis Laxalde <denis.laxalde at logilab.fr>
# Date 1571920100 -7200
#      Thu Oct 24 14:28:20 2019 +0200
# Branch stable
# Node ID 5da37487d2dbd296d1ffa79d9b99a1b4ab077335
# Parent  4ed5932bd9a54928a92156ac0252ce97965e6987
py3: decode encoding literal before passing to .decode()

bytes.decode(<encoding>) wants an str as "encoding" parameter,
it raises a TypeError if given a bytestring. encoding.encoding and
encoding.fallbackencoding are bytes values.

diff --git a/mercurial/mail.py b/mercurial/mail.py
--- a/mercurial/mail.py
+++ b/mercurial/mail.py
@@ -342,6 +342,7 @@ def _encode(ui, s, charsets):
         s.decode('ascii')
     except UnicodeDecodeError:
         for ics in (encoding.encoding, encoding.fallbackencoding):
+            ics = pycompat.sysstr(ics)
             try:
                 u = s.decode(ics)
             except UnicodeDecodeError:


More information about the Mercurial-devel mailing list