Skip to content

Commit f9cbc2e

Browse files
committed
Close OleFileIO instance when closing or exiting FPX or MIC
1 parent 096a8ea commit f9cbc2e

File tree

4 files changed

+36
-0
lines changed

4 files changed

+36
-0
lines changed

Tests/test_file_fpx.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,16 @@ def test_sanity():
1818
assert_image_equal_tofile(im, "Tests/images/input_bw_one_band.png")
1919

2020

21+
def test_close():
22+
with Image.open("Tests/images/input_bw_one_band.fpx") as im:
23+
pass
24+
assert im.ole.fp.closed
25+
26+
im = Image.open("Tests/images/input_bw_one_band.fpx")
27+
im.close()
28+
assert im.ole.fp.closed
29+
30+
2131
def test_invalid_file():
2232
# Test an invalid OLE file
2333
invalid_file = "Tests/images/flower.jpg"

Tests/test_file_mic.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,16 @@ def test_seek():
5151
assert im.tell() == 0
5252

5353

54+
def test_close():
55+
with Image.open(TEST_FILE) as im:
56+
pass
57+
assert im.ole.fp.closed
58+
59+
im = Image.open(TEST_FILE)
60+
im.close()
61+
assert im.ole.fp.closed
62+
63+
5464
def test_invalid_file():
5565
# Test an invalid OLE file
5666
invalid_file = "Tests/images/flower.jpg"

src/PIL/FpxImagePlugin.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,14 @@ def load(self):
235235

236236
return ImageFile.ImageFile.load(self)
237237

238+
def close(self):
239+
self.ole.close()
240+
super().close()
241+
242+
def __exit__(self, *args):
243+
self.ole.close()
244+
super().__exit__()
245+
238246

239247
#
240248
# --------------------------------------------------------------------

src/PIL/MicImagePlugin.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,14 @@ def seek(self, frame):
8989
def tell(self):
9090
return self.frame
9191

92+
def close(self):
93+
self.ole.close()
94+
super().close()
95+
96+
def __exit__(self, *args):
97+
self.ole.close()
98+
super().__exit__()
99+
92100

93101
#
94102
# --------------------------------------------------------------------

0 commit comments

Comments
 (0)