Skip to content

Commit

Permalink
Merge pull request #6219 from radarhere/gif_eof
Browse files Browse the repository at this point in the history
Do not update GIF frame position until local image is found
  • Loading branch information
hugovk committed May 27, 2022
2 parents 19aa2b6 + c811843 commit 0476914
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 12 deletions.
Binary file added Tests/images/comment_after_last_frame.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
27 changes: 17 additions & 10 deletions Tests/test_file_gif.py
Expand Up @@ -354,16 +354,23 @@ def test_seek_rewind():
assert_image_equal(im, expected)


def test_n_frames():
for path, n_frames in [[TEST_GIF, 1], ["Tests/images/iss634.gif", 42]]:
# Test is_animated before n_frames
with Image.open(path) as im:
assert im.is_animated == (n_frames != 1)

# Test is_animated after n_frames
with Image.open(path) as im:
assert im.n_frames == n_frames
assert im.is_animated == (n_frames != 1)
@pytest.mark.parametrize(
"path, n_frames",
(
(TEST_GIF, 1),
("Tests/images/comment_after_last_frame.gif", 2),
("Tests/images/iss634.gif", 42),
),
)
def test_n_frames(path, n_frames):
# Test is_animated before n_frames
with Image.open(path) as im:
assert im.is_animated == (n_frames != 1)

# Test is_animated after n_frames
with Image.open(path) as im:
assert im.n_frames == n_frames
assert im.is_animated == (n_frames != 1)


def test_no_change():
Expand Down
4 changes: 2 additions & 2 deletions src/PIL/GifImagePlugin.py
Expand Up @@ -185,8 +185,6 @@ def _seek(self, frame, update_image=True):
if not s or s == b";":
raise EOFError

self.__frame = frame

self.tile = []

palette = None
Expand Down Expand Up @@ -291,6 +289,8 @@ def _seek(self, frame, update_image=True):
if interlace is None:
# self._fp = None
raise EOFError

self.__frame = frame
if not update_image:
return

Expand Down

0 comments on commit 0476914

Please sign in to comment.