Skip to content

Commit 590c616

Browse files
committed
If next byte ends the GIF, stay on the current frame
1 parent 73cf28c commit 590c616

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

src/PIL/GifImagePlugin.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -154,9 +154,6 @@ def _seek(self, frame):
154154

155155
if frame != self.__frame + 1:
156156
raise ValueError(f"cannot seek to frame {frame}")
157-
self.__frame = frame
158-
159-
self.tile = []
160157

161158
self.fp = self.__fp
162159
if self.__offset:
@@ -166,6 +163,14 @@ def _seek(self, frame):
166163
pass
167164
self.__offset = 0
168165

166+
s = self.fp.read(1)
167+
if not s or s == b";":
168+
raise EOFError
169+
170+
self.__frame = frame
171+
172+
self.tile = []
173+
169174
if self.__frame == 1:
170175
self.pyaccess = None
171176
if "transparency" in self.info:
@@ -187,7 +192,8 @@ def _seek(self, frame):
187192
interlace = None
188193
while True:
189194

190-
s = self.fp.read(1)
195+
if not s:
196+
s = self.fp.read(1)
191197
if not s or s == b";":
192198
break
193199

@@ -225,6 +231,7 @@ def _seek(self, frame):
225231
else:
226232
info["comment"] = block
227233
block = self.data()
234+
s = None
228235
continue
229236
elif s[0] == 255:
230237
#
@@ -266,6 +273,7 @@ def _seek(self, frame):
266273
else:
267274
pass
268275
# raise OSError, "illegal GIF tag `%x`" % s[0]
276+
s = None
269277

270278
frame_palette = palette or self.global_palette
271279

0 commit comments

Comments
 (0)