Skip to content

Commit 5f87e63

Browse files
committed
Only close file handle in ImagePalette.save() when we opened it
1 parent 02764a0 commit 5f87e63

1 file changed

Lines changed: 16 additions & 11 deletions

File tree

src/PIL/ImagePalette.py

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -191,19 +191,24 @@ def save(self, fp: str | IO[str]) -> None:
191191
if self.rawmode:
192192
msg = "palette contains raw palette data"
193193
raise ValueError(msg)
194+
close_fp = False
194195
if isinstance(fp, str):
195196
fp = open(fp, "w")
196-
fp.write("# Palette\n")
197-
fp.write(f"# Mode: {self.mode}\n")
198-
for i in range(256):
199-
fp.write(f"{i}")
200-
for j in range(i * len(self.mode), (i + 1) * len(self.mode)):
201-
try:
202-
fp.write(f" {self.palette[j]}")
203-
except IndexError:
204-
fp.write(" 0")
205-
fp.write("\n")
206-
fp.close()
197+
close_fp = True
198+
try:
199+
fp.write("# Palette\n")
200+
fp.write(f"# Mode: {self.mode}\n")
201+
for i in range(256):
202+
fp.write(f"{i}")
203+
for j in range(i * len(self.mode), (i + 1) * len(self.mode)):
204+
try:
205+
fp.write(f" {self.palette[j]}")
206+
except IndexError:
207+
fp.write(" 0")
208+
fp.write("\n")
209+
finally:
210+
if close_fp:
211+
fp.close()
207212

208213

209214
# --------------------------------------------------------------------

0 commit comments

Comments
 (0)