Skip to content

Commit

Permalink
Merge pull request #6456 from radarhere/memory
Browse files Browse the repository at this point in the history
Moved tile encoding into separate function
  • Loading branch information
hugovk committed Jul 24, 2022
2 parents 446446f + 8784ee1 commit f3551ae
Showing 1 changed file with 8 additions and 5 deletions.
13 changes: 8 additions & 5 deletions src/PIL/ImageFile.py
Original file line number Diff line number Diff line change
Expand Up @@ -499,9 +499,14 @@ def _save(im, fp, tile, bufsize=0):
try:
fh = fp.fileno()
fp.flush()
exc = None
except (AttributeError, io.UnsupportedOperation) as e:
exc = e
_encode_tile(im, fp, tile, bufsize, fh)
except (AttributeError, io.UnsupportedOperation) as exc:
_encode_tile(im, fp, tile, bufsize, None, exc)
if hasattr(fp, "flush"):
fp.flush()


def _encode_tile(im, fp, tile, bufsize, fh, exc=None):
for e, b, o, a in tile:
if o > 0:
fp.seek(o)
Expand All @@ -526,8 +531,6 @@ def _save(im, fp, tile, bufsize=0):
raise OSError(f"encoder error {s} when writing image file") from exc
finally:
encoder.cleanup()
if hasattr(fp, "flush"):
fp.flush()


def _safe_read(fp, size):
Expand Down

0 comments on commit f3551ae

Please sign in to comment.