mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-01-25 00:34:14 +03:00
Only close original fp in __del__ and __exit__ if original fp is exclusive
This commit is contained in:
parent
125a001b66
commit
22b0110f89
|
@ -532,6 +532,18 @@ class TestImage(PillowTestCase):
|
|||
with Image.open(test_file) as im:
|
||||
self.assert_warning(None, im.save, temp_file)
|
||||
|
||||
def test_load_on_nonexclusive_multiframe(self):
|
||||
with open("Tests/images/frozenpond.mpo", "rb") as fp:
|
||||
def act(fp):
|
||||
im = Image.open(fp)
|
||||
im.load()
|
||||
act(fp)
|
||||
|
||||
with Image.open(fp) as im:
|
||||
im.load()
|
||||
|
||||
self.assertFalse(fp.closed)
|
||||
|
||||
|
||||
class MockEncoder(object):
|
||||
pass
|
||||
|
|
|
@ -578,11 +578,12 @@ class Image(object):
|
|||
return self
|
||||
|
||||
def __exit__(self, *args):
|
||||
if hasattr(self, "_close__fp"):
|
||||
self._close__fp()
|
||||
if (hasattr(self, 'fp') and hasattr(self, '_exclusive_fp')
|
||||
and self.fp and self._exclusive_fp):
|
||||
self.fp.close()
|
||||
and self._exclusive_fp):
|
||||
if hasattr(self, "_close__fp"):
|
||||
self._close__fp()
|
||||
if self.fp:
|
||||
self.fp.close()
|
||||
self.fp = None
|
||||
|
||||
def close(self):
|
||||
|
|
Loading…
Reference in New Issue
Block a user