Bug #295351 - Make update_dbentries() return unicode if it's given unicode,
authorZac Medico <zmedico@gentoo.org>
Wed, 2 Dec 2009 06:55:49 +0000 (06:55 -0000)
committerZac Medico <zmedico@gentoo.org>
Wed, 2 Dec 2009 06:55:49 +0000 (06:55 -0000)
and bytes if it's given bytes.

svn path=/main/trunk/; revision=14921

pym/portage/update.py

index c2f8f300602ed2b3f6b76db7baf2e577ab036f38..04812d5a466788987c28d352264f73e3349f3dc8 100644 (file)
@@ -63,15 +63,19 @@ def update_dbentries(update_iter, mydata):
                k_unicode = _unicode_decode(k,
                        encoding=_encodings['repo.content'], errors='replace')
                if k_unicode not in ignored_dbentries:
+                       orig_content = mycontent
                        mycontent = _unicode_decode(mycontent,
                                encoding=_encodings['repo.content'], errors='replace')
+                       is_encoded = mycontent is not orig_content
                        orig_content = mycontent
                        for update_cmd in update_iter:
                                mycontent = update_dbentry(update_cmd, mycontent)
                        if mycontent != orig_content:
-                               updated_items[k] = _unicode_encode(mycontent,
-                                       encoding=_encodings['repo.content'],
-                                       errors='backslashreplace')
+                               if is_encoded:
+                                       mycontent = _unicode_encode(mycontent,
+                                               encoding=_encodings['repo.content'],
+                                               errors='backslashreplace')
+                               updated_items[k] = mycontent
        return updated_items
 
 def fixdbentries(update_iter, dbdir):