summaryrefslogtreecommitdiff
path: root/Lib/tarfile.py
diff options
context:
space:
mode:
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 bf6129e39f..bfdba58efe 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