diff --git a/Tests/test_image.py b/Tests/test_image.py index 4e0840cf1..b0d719667 100644 --- a/Tests/test_image.py +++ b/Tests/test_image.py @@ -775,6 +775,14 @@ class TestImage: 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 95b4c64ee..b153e5596 100644 --- a/src/PIL/Image.py +++ b/src/PIL/Image.py @@ -4136,7 +4136,7 @@ class Exif(_ExifBase): 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