In config.__setitem__(), convert keys/values to unicode in order to avoid
authorZac Medico <zmedico@gentoo.org>
Fri, 7 Aug 2009 08:47:47 +0000 (08:47 -0000)
committerZac Medico <zmedico@gentoo.org>
Fri, 7 Aug 2009 08:47:47 +0000 (08:47 -0000)
potential UnicodeDecodeError exceptions later.

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

pym/portage/__init__.py

index 276f8852dcf9d4123c8e1396944f9cd19c47053e..af908f041cc0c9a7321001b87e2e8b34dac6c998 100644 (file)
@@ -3197,8 +3197,15 @@ class config(object):
                "set a value; will be thrown away at reset() time"
                if not isinstance(myvalue, basestring):
                        raise ValueError("Invalid type being used as a value: '%s': '%s'" % (str(mykey),str(myvalue)))
+
+               # Avoid potential UnicodeDecodeError exceptions later.
+               if not isinstance(mykey, unicode):
+                       mykey = unicode(mykey, encoding='utf_8', errors='replace')
+               if not isinstance(myvalue, unicode):
+                       myvalue = unicode(myvalue, encoding='utf_8', errors='replace')
+
                self.modifying()
-               self.modifiedkeys += [mykey]
+               self.modifiedkeys.append(mykey)
                self.configdict["env"][mykey]=myvalue
 
        def environ(self):