]> granicus.if.org Git - python/commitdiff
Merged revisions 77809 via svnmerge from
authorEzio Melotti <ezio.melotti@gmail.com>
Thu, 28 Jan 2010 01:44:41 +0000 (01:44 +0000)
committerEzio Melotti <ezio.melotti@gmail.com>
Thu, 28 Jan 2010 01:44:41 +0000 (01:44 +0000)
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r77809 | ezio.melotti | 2010-01-28 03:41:30 +0200 (Thu, 28 Jan 2010) | 1 line

  avoid to use zlib when the compress type is not ZIP_DEFLATED
........

Lib/zipfile.py

index 7ee5e2f04655454d7a1a619fa342cef45f5aab7e..d5caf260798157d5006787d94b5bb40d019393a6 100644 (file)
@@ -463,7 +463,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 = b''
 
         self._readbuffer = b''
@@ -472,10 +477,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:
@@ -591,7 +592,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)