summaryrefslogtreecommitdiffstats
path: root/Lib/distutils
diff options
context:
space:
mode:
authorÉric Araujo <merwok@netwok.org>2010-11-06 02:10:32 (GMT)
committerÉric Araujo <merwok@netwok.org>2010-11-06 02:10:32 (GMT)
commit5ac6d80c02a4da1f36652e6531da3c886df1f58c (patch)
tree994056f43b6edab6491515100f808213963430a8 /Lib/distutils
parent25b574138353df835c94039eecb0b9edefc1dede (diff)
downloadcpython-5ac6d80c02a4da1f36652e6531da3c886df1f58c.zip
cpython-5ac6d80c02a4da1f36652e6531da3c886df1f58c.tar.gz
cpython-5ac6d80c02a4da1f36652e6531da3c886df1f58c.tar.bz2
Also close file descriptors from os.popen and subprocess.Popen
Diffstat (limited to 'Lib/distutils')
-rw-r--r--Lib/distutils/command/bdist_rpm.py36
-rw-r--r--Lib/distutils/msvc9compiler.py10
2 files changed, 26 insertions, 20 deletions
diff --git a/Lib/distutils/command/bdist_rpm.py b/Lib/distutils/command/bdist_rpm.py
index 452f950..e2ae877 100644
--- a/Lib/distutils/command/bdist_rpm.py
+++ b/Lib/distutils/command/bdist_rpm.py
@@ -343,22 +343,26 @@ class bdist_rpm(Command):
src_rpm, non_src_rpm, spec_path)
out = os.popen(q_cmd)
- binary_rpms = []
- source_rpm = None
- while True:
- line = out.readline()
- if not line:
- break
- l = line.strip().split()
- assert(len(l) == 2)
- binary_rpms.append(l[1])
- # The source rpm is named after the first entry in the spec file
- if source_rpm is None:
- source_rpm = l[0]
-
- status = out.close()
- if status:
- raise DistutilsExecError("Failed to execute: %s" % repr(q_cmd))
+ try:
+ binary_rpms = []
+ source_rpm = None
+ while True:
+ line = out.readline()
+ if not line:
+ break
+ l = line.strip().split()
+ assert(len(l) == 2)
+ binary_rpms.append(l[1])
+ # The source rpm is named after the first entry in the spec file
+ if source_rpm is None:
+ source_rpm = l[0]
+
+ status = out.close()
+ if status:
+ raise DistutilsExecError("Failed to execute: %s" % repr(q_cmd))
+
+ finally:
+ out.close()
self.spawn(rpm_cmd)
diff --git a/Lib/distutils/msvc9compiler.py b/Lib/distutils/msvc9compiler.py
index 761b9ca..6d7825d 100644
--- a/Lib/distutils/msvc9compiler.py
+++ b/Lib/distutils/msvc9compiler.py
@@ -263,10 +263,12 @@ def query_vcvarsall(version, arch="x86"):
popen = subprocess.Popen('"%s" %s & set' % (vcvarsall, arch),
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
-
- stdout, stderr = popen.communicate()
- if popen.wait() != 0:
- raise DistutilsPlatformError(stderr.decode("mbcs"))
+ try:
+ stdout, stderr = popen.communicate()
+ if popen.wait() != 0:
+ raise DistutilsPlatformError(stderr.decode("mbcs"))
+ finally:
+ popen.close()
stdout = stdout.decode("mbcs")
for line in stdout.split("\n"):