diff --git a/Tests/test_image.py b/Tests/test_image.py index 5795f6c5cb7..2d35cd277ce 100644 --- a/Tests/test_image.py +++ b/Tests/test_image.py @@ -774,6 +774,14 @@ def test_empty_exif(self) -> None: exif.load(b"Exif\x00\x00") assert not dict(exif) + def test_empty_get_ifd(self) -> None: + exif = Image.Exif() + ifd = exif.get_ifd(0x8769) + assert ifd == {} + + ifd[36864] = b"0220" + assert exif.get_ifd(0x8769) == {36864: b"0220"} + @mark_if_feature_version( pytest.mark.valgrind_known_error, "libjpeg_turbo", "2.0", reason="Known Failing" ) diff --git a/src/PIL/Image.py b/src/PIL/Image.py index fbeecef0e6a..e1cbf533571 100644 --- a/src/PIL/Image.py +++ b/src/PIL/Image.py @@ -4111,7 +4111,7 @@ def get_ifd(self, tag: int) -> dict[int, Any]: ifd = self._get_ifd_dict(tag_data, tag) if ifd is not None: self._ifds[tag] = ifd - ifd = self._ifds.get(tag, {}) + ifd = self._ifds.setdefault(tag, {}) if tag == ExifTags.IFD.Exif and self._hidden_data: ifd = { k: v