diff --git a/src/PIL/GifImagePlugin.py b/src/PIL/GifImagePlugin.py index 9005556e216..c8973e7b338 100644 --- a/src/PIL/GifImagePlugin.py +++ b/src/PIL/GifImagePlugin.py @@ -154,9 +154,6 @@ def _seek(self, frame): if frame != self.__frame + 1: raise ValueError(f"cannot seek to frame {frame}") - self.__frame = frame - - self.tile = [] self.fp = self.__fp if self.__offset: @@ -166,6 +163,14 @@ def _seek(self, frame): pass self.__offset = 0 + s = self.fp.read(1) + if not s or s == b";": + raise EOFError + + self.__frame = frame + + self.tile = [] + if self.__frame == 1: self.pyaccess = None if "transparency" in self.info: @@ -187,7 +192,8 @@ def _seek(self, frame): interlace = None while True: - s = self.fp.read(1) + if not s: + s = self.fp.read(1) if not s or s == b";": break @@ -225,6 +231,7 @@ def _seek(self, frame): else: info["comment"] = block block = self.data() + s = None continue elif s[0] == 255: # @@ -266,6 +273,7 @@ def _seek(self, frame): else: pass # raise OSError, "illegal GIF tag `%x`" % s[0] + s = None frame_palette = palette or self.global_palette