--- a/mercurial/changelog.py Thu May 19 16:57:14 2011 +0200
+++ b/mercurial/changelog.py Thu May 19 18:10:03 2011 +0200
@@ -205,6 +205,11 @@
def add(self, manifest, files, desc, transaction, p1, p2,
user, date=None, extra=None):
+ # Convert to UTF-8 encoded bytestrings as the very first
+ # thing: calling any method on a localstr object will turn it
+ # into a str object and the cached UTF-8 string is thus lost.
+ user, desc = encoding.fromlocal(user), encoding.fromlocal(desc)
+
user = user.strip()
# An empty username or a username with a "\n" will make the
# revision text contain two "\n\n" sequences -> corrupt
@@ -218,8 +223,6 @@
# strip trailing whitespace and leading and trailing empty lines
desc = '\n'.join([l.rstrip() for l in desc.splitlines()]).strip('\n')
- user, desc = encoding.fromlocal(user), encoding.fromlocal(desc)
-
if date:
parseddate = "%d %d" % util.parsedate(date)
else: