From 3e05f2c2a8e2d911ddc38bdb50ac335519c81bbd Mon Sep 17 00:00:00 2001 From: Martin Geisler Date: Tue, 29 Sep 2009 01:08:18 +0200 Subject: [PATCH] ui: guard against UnicodeDecodeErrors in ui.wrap --- mercurial/util.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/mercurial/util.py b/mercurial/util.py index ed7cc41019..6974e6e595 100644 --- a/mercurial/util.py +++ b/mercurial/util.py @@ -1278,9 +1278,12 @@ def wrap(line, hangindent, width=78): padding = '\n' + ' ' * hangindent # To avoid corrupting multi-byte characters in line, we must wrap # a Unicode string instead of a bytestring. - u = line.decode(encoding.encoding) - w = padding.join(textwrap.wrap(u, width=width - hangindent)) - return w.encode(encoding.encoding) + try: + u = line.decode(encoding.encoding) + w = padding.join(textwrap.wrap(u, width=width - hangindent)) + return w.encode(encoding.encoding) + except UnicodeDecodeError: + return padding.join(textwrap.wrap(line, width=width - hangindent)) def iterlines(iterator): for chunk in iterator: