use context block

This commit is contained in:
Atsushi Odagiri 2015-03-21 14:57:49 +09:00
parent 8c75b955c1
commit b7c30a6f92

View File

@ -2239,21 +2239,20 @@ def open(fp, mode="r"):
opened and identified.
"""
should_close = False
if mode != "r":
raise ValueError("bad mode %r" % mode)
if isPath(fp):
filename = fp
fp = builtins.open(fp, "rb")
should_close = True
with builtins.open(fp, "rb") as fp:
return _open(fp, filename, mode)
else:
filename = ""
return _open(fp, filename, mode)
def finalize():
if should_close:
fp.close()
def _open(fp, filename, mode):
prefix = fp.read(16)
preinit()
@ -2265,7 +2264,6 @@ def open(fp, mode="r"):
fp.seek(0)
im = factory(fp, filename)
_decompression_bomb_check(im.size)
finalize()
return im
except (SyntaxError, IndexError, TypeError):
# import traceback
@ -2281,14 +2279,12 @@ def open(fp, mode="r"):
fp.seek(0)
im = factory(fp, filename)
_decompression_bomb_check(im.size)
finalize()
return im
except (SyntaxError, IndexError, TypeError):
# import traceback
# traceback.print_exc()
pass
finalize()
raise IOError("cannot identify image file %r"
% (filename if filename else fp))