From 372b1abe6924c1274d8b1e6f1b38ba8aec0dde41 Mon Sep 17 00:00:00 2001 From: wiredfool Date: Tue, 22 Nov 2016 02:46:54 -0800 Subject: [PATCH] expand tile element names, don't attempt to mmap if args has < 3 elements --- PIL/ImageFile.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/PIL/ImageFile.py b/PIL/ImageFile.py index 55cb701a1..94f705b3c 100644 --- a/PIL/ImageFile.py +++ b/PIL/ImageFile.py @@ -150,15 +150,16 @@ class ImageFile(Image.Image): if use_mmap: # try memory mapping - d, e, o, a = self.tile[0] - if d == "raw" and a[0] == self.mode and a[0] in Image._MAPMODES: + decoder_name, extents, offset, args = self.tile[0] + if decoder_name == "raw" and len(args) >= 3 and args[0] == self.mode \ + and args[0] in Image._MAPMODES: try: if hasattr(Image.core, "map"): # use built-in mapper WIN32 only self.map = Image.core.map(self.filename) - self.map.seek(o) + self.map.seek(offset) self.im = self.map.readimage( - self.mode, self.size, a[1], a[2] + self.mode, self.size, args[1], args[2] ) else: # use mmap, if possible @@ -167,7 +168,7 @@ class ImageFile(Image.Image): size = os.path.getsize(self.filename) self.map = mmap.mmap(fp.fileno(), size, access=mmap.ACCESS_READ) self.im = Image.core.map_buffer( - self.map, self.size, d, e, o, a + self.map, self.size, decoder_name, extents, offset, args ) readonly = 1 # After trashing self.im, we might need to reload the palette data.