From 4611b05bd8c7922155f49f5401f10963f48bded1 Mon Sep 17 00:00:00 2001 From: Ezio Melotti Date: Thu, 28 Jan 2010 01:41:30 +0000 Subject: [PATCH] avoid to use zlib when the compress type is not ZIP_DEFLATED --- Lib/zipfile.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/Lib/zipfile.py b/Lib/zipfile.py index a70a1c95293..3a44d3a9de4 100644 --- a/Lib/zipfile.py +++ b/Lib/zipfile.py @@ -471,7 +471,12 @@ class ZipExtFile(io.BufferedIOBase): self._fileobj = fileobj self._decrypter = decrypter - self._decompressor = zlib.decompressobj(-15) + self._compress_type = zipinfo.compress_type + self._compress_size = zipinfo.compress_size + self._compress_left = zipinfo.compress_size + + if self._compress_type == ZIP_DEFLATED: + self._decompressor = zlib.decompressobj(-15) self._unconsumed = '' self._readbuffer = '' @@ -480,10 +485,6 @@ class ZipExtFile(io.BufferedIOBase): self._universal = 'U' in mode self.newlines = None - self._compress_type = zipinfo.compress_type - self._compress_size = zipinfo.compress_size - self._compress_left = zipinfo.compress_size - # Adjust read size for encrypted files since the first 12 bytes # are for the encryption/password information. if self._decrypter is not None: @@ -599,7 +600,8 @@ class ZipExtFile(io.BufferedIOBase): self._unconsumed += data # Handle unconsumed data. - if len(self._unconsumed) > 0 and n > len_readbuffer: + if (len(self._unconsumed) > 0 and n > len_readbuffer and + self._compress_type == ZIP_DEFLATED): data = self._decompressor.decompress( self._unconsumed, max(n - len_readbuffer, self.MIN_READ_SIZE)