From 6c4ecffcd7ff2b147a714d682f16adee78d4781c Mon Sep 17 00:00:00 2001 From: Fabio Erculiani Date: Sat, 5 May 2012 08:49:26 +0200 Subject: [PATCH] [entropy.spm] PortagePlugin: __source_env_get_var: return unicode, do not leak fds --- .../plugins/interfaces/portage_plugin/__init__.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py b/lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py index cc0c48a08..c176d4ea6 100644 --- a/lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py +++ b/lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py @@ -1193,12 +1193,15 @@ class PortagePlugin(SpmPlugin): exec_path = os.path.join(dirname, "env_sourcer.sh") args = [exec_path, env_file, env_var] proc = subprocess.Popen(args, stdout = subprocess.PIPE) - sts = proc.wait() - if sts != 0: - raise IOError("cannot source %s and get %s" % ( - env_file, env_var,)) - output = proc.stdout.read().strip() - return output + try: + sts = proc.wait() + if sts != 0: + raise IOError("cannot source %s and get %s" % ( + env_file, env_var,)) + output = proc.stdout.read().strip() + finally: + proc.stdout.close() + return const_convert_to_unicode(output) def __pkg_sources_filtering(self, sources): sources.discard("->")