From: Zac Medico Date: Fri, 7 Aug 2009 08:21:56 +0000 (-0000) Subject: Make spawn decode unicode in order to avoid a potential UnicodeEncodeError X-Git-Tag: v2.2_rc37~22 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=40932fc85440f9fd5952829913c327ad3bfee722;p=portage.git Make spawn decode unicode in order to avoid a potential UnicodeEncodeError from os.execve(). svn path=/main/trunk/; revision=13944 --- diff --git a/pym/portage/process.py b/pym/portage/process.py index a88f5bf28..051a59f61 100644 --- a/pym/portage/process.py +++ b/pym/portage/process.py @@ -178,6 +178,17 @@ def spawn(mycommand, env={}, opt_name=None, fd_pipes=None, returnpid=False, if isinstance(mycommand, basestring): mycommand = mycommand.split() + # Avoid a potential UnicodeEncodeError from os.execve(). + env_bytes = {} + for k, v in env.iteritems(): + if isinstance(k, unicode): + k = k.encode('utf_8', 'replace') + if isinstance(v, unicode): + v = v.encode('utf_8', 'replace') + env_bytes[k] = v + env = env_bytes + del env_bytes + # If an absolute path to an executable file isn't given # search for it unless we've been told not to. binary = mycommand[0]