Bug #282306 - Inside dblink._security_check(), fall back to utf_8 encoding
authorZac Medico <zmedico@gentoo.org>
Sat, 22 Aug 2009 19:05:32 +0000 (19:05 -0000)
committerZac Medico <zmedico@gentoo.org>
Sat, 22 Aug 2009 19:05:32 +0000 (19:05 -0000)
it a path cannot be encoded under the user's chosen encoding.

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

pym/portage/dbapi/vartree.py

index d73311bc081e9cc5729c9520a42d4c0276366cfc..aa74ed687e42327439e40b5580a8429ec4275f9c 100644 (file)
@@ -3136,6 +3136,22 @@ class dblink(object):
                                0 == i % self._file_merge_yield_interval:
                                scheduler.scheduleYield()
 
+                       if os is _os_merge:
+                               try:
+                                       _unicode_encode(path,
+                                               encoding=_encodings['merge'], errors='strict')
+                               except UnicodeEncodeError:
+                                       # The package appears to have been merged with a 
+                                       # different value of sys.getfilesystemencoding(),
+                                       # so fall back to utf_8 if appropriate.
+                                       try:
+                                               _unicode_encode(path,
+                                                       encoding=_encodings['fs'], errors='strict')
+                                       except UnicodeEncodeError:
+                                               pass
+                                       else:
+                                               os = portage.os
+
                        try:
                                s = os.lstat(path)
                        except OSError, e: