From cfeb7f4273946bb5f67dcf0b9de403bd20fa1875 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Fri, 7 Aug 2009 08:31:39 +0000 Subject: Convert environment variables to unicode inside the config constructor, in order to avoid potential UnicodeDecodeError exceptions later. svn path=/main/trunk/; revision=13945 --- pym/portage/__init__.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) 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 -- cgit v1.2.3-1-g7c22