ui: guard against UnicodeDecodeErrors in ui.wrap
authorMartin Geisler <mg@lazybytes.net>
Tue, 29 Sep 2009 01:08:18 +0200
changeset 9495 b2d65ee49a72
parent 9480 44758742ad2e
child 9505 28b089ae4001
child 9525 2299c421a98e
ui: guard against UnicodeDecodeErrors in ui.wrap
mercurial/util.py
--- a/mercurial/util.py	Sun Sep 27 01:44:46 2009 +0200
+++ b/mercurial/util.py	Tue Sep 29 01:08:18 2009 +0200
@@ -1278,9 +1278,12 @@
     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: