diff --git a/Tests/test_imagefile.py b/Tests/test_imagefile.py index e0dbd909a..b4107e8e3 100644 --- a/Tests/test_imagefile.py +++ b/Tests/test_imagefile.py @@ -244,3 +244,8 @@ class TestPyDecoder: im = MockImageFile(buf) assert im.format is None assert im.get_format_mimetype() is None + + def test_oserror(self): + im = Image.new("RGB", (1, 1)) + with pytest.raises(OSError): + im.save(BytesIO(), "JPEG2000") diff --git a/src/PIL/ImageFile.py b/src/PIL/ImageFile.py index 81ec0c266..b06b89811 100644 --- a/src/PIL/ImageFile.py +++ b/src/PIL/ImageFile.py @@ -509,7 +509,7 @@ def _save(im, fp, tile, bufsize=0): try: fh = fp.fileno() fp.flush() - except (AttributeError, io.UnsupportedOperation) as e: + except (AttributeError, io.UnsupportedOperation) as exc: # compress to Python file-compatible object for e, b, o, a in tile: e = Image._getencoder(im.mode, e, a, im.encoderconfig) @@ -526,7 +526,7 @@ def _save(im, fp, tile, bufsize=0): if s: break if s < 0: - raise OSError("encoder error %d when writing image file" % s) from e + raise OSError("encoder error %d when writing image file" % s) from exc e.cleanup() else: # slight speedup: compress to real file object