summaryrefslogtreecommitdiffstats
path: root/Lib/tarfile.py
diff options
context:
space:
mode:
authorAntoine Pitrou <solipsis@pitrou.net>2010-09-23 18:36:46 (GMT)
committerAntoine Pitrou <solipsis@pitrou.net>2010-09-23 18:36:46 (GMT)
commit95f5560b46b24a42468dda2f2ebcc3eba271c28d (patch)
tree3a945aa450620ae616ffde7c619cde07e58c69e2 /Lib/tarfile.py
parente5768cf348ec353dff7e3f2144f4e1690a094a64 (diff)
downloadcpython-95f5560b46b24a42468dda2f2ebcc3eba271c28d.zip
cpython-95f5560b46b24a42468dda2f2ebcc3eba271c28d.tar.gz
cpython-95f5560b46b24a42468dda2f2ebcc3eba271c28d.tar.bz2
Try to fix test_tarfile issues on Windows buildbots by closing file
objects explicitly instead of letting them linger on.
Diffstat (limited to 'Lib/tarfile.py')
-rw-r--r--Lib/tarfile.py8
1 files changed, 7 insertions, 1 deletions
diff --git a/Lib/tarfile.py b/Lib/tarfile.py
index bf6129e..bfdba58 100644
--- a/Lib/tarfile.py
+++ b/Lib/tarfile.py
@@ -1764,14 +1764,19 @@ class TarFile(object):
if fileobj is None:
fileobj = bltn_open(name, mode + "b")
+ extfileobj = False
+ else:
+ extfileobj = True
try:
t = cls.taropen(name, mode,
gzip.GzipFile(name, mode, compresslevel, fileobj),
**kwargs)
except IOError:
+ if not extfileobj:
+ fileobj.close()
raise ReadError("not a gzip file")
- t._extfileobj = False
+ t._extfileobj = extfileobj
return t
@classmethod
@@ -1795,6 +1800,7 @@ class TarFile(object):
try:
t = cls.taropen(name, mode, fileobj, **kwargs)
except (IOError, EOFError):
+ fileobj.close()
raise ReadError("not a bzip2 file")
t._extfileobj = False
return t