From 9ba1029d515c5113bd0b1ea4f99fb5d3f1a9659b Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Mon, 15 Sep 2025 22:28:30 +1000 Subject: [PATCH] Clear C image when MPO frame image size changes --- Tests/test_file_mpo.py | 2 ++ src/PIL/JpegImagePlugin.py | 2 ++ 2 files changed, 4 insertions(+) diff --git a/Tests/test_file_mpo.py b/Tests/test_file_mpo.py index 9262e6ca7..ba05bbe43 100644 --- a/Tests/test_file_mpo.py +++ b/Tests/test_file_mpo.py @@ -108,9 +108,11 @@ def test_frame_size() -> None: # in the SOF marker of the second frame with Image.open("Tests/images/sugarshack_frame_size.mpo") as im: assert im.size == (640, 480) + im.load() im.seek(1) assert im.size == (680, 480) + im.load() im.seek(0) assert im.size == (640, 480) diff --git a/src/PIL/JpegImagePlugin.py b/src/PIL/JpegImagePlugin.py index 0d110035e..755ca648e 100644 --- a/src/PIL/JpegImagePlugin.py +++ b/src/PIL/JpegImagePlugin.py @@ -193,6 +193,8 @@ def SOF(self: JpegImageFile, marker: int) -> None: n = i16(self.fp.read(2)) - 2 s = ImageFile._safe_read(self.fp, n) self._size = i16(s, 3), i16(s, 1) + if self._im is not None and self.size != self.im.size: + self._im = None self.bits = s[0] if self.bits != 8: