From: Zac Medico Date: Fri, 7 Aug 2009 08:31:39 +0000 (-0000) Subject: Convert environment variables to unicode inside the config constructor, in X-Git-Tag: v2.2_rc37~21 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=cfeb7f4273946bb5f67dcf0b9de403bd20fa1875;p=portage.git Convert environment variables to unicode inside the config constructor, in order to avoid potential UnicodeDecodeError exceptions later. svn path=/main/trunk/; revision=13945 --- diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py index 8b9ac9012..276f8852d 100644 --- a/pym/portage/__init__.py +++ b/pym/portage/__init__.py @@ -1519,7 +1519,17 @@ class config(object): # backupenv is used for calculating incremental variables. if env is None: env = os.environ - self.backupenv = env.copy() + + # Avoid potential UnicodeDecodeError exceptions later. + env_unicode = {} + for k, v in env.iteritems(): + if not isinstance(k, unicode): + k = unicode(k, encoding='utf_8', errors='replace') + if not isinstance(v, unicode): + v = unicode(v, encoding='utf_8', errors='replace') + env_unicode[k] = v + + self.backupenv = env_unicode if env_d: # Remove duplicate values so they don't override updated