diff options
author | Mickaƫl Schoentgen <contact@tiger-222.fr> | 2018-07-29 18:26:52 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2018-07-29 18:26:52 (GMT) |
commit | 3f8c6913b82ed9c05e57175bcbfeacde46c598e3 (patch) | |
tree | 5a548963a242aa533ccd529028928724c6dcb093 /Lib | |
parent | d2e902e4fb304f27e4a72356efbc1fc26be3935d (diff) | |
download | cpython-3f8c6913b82ed9c05e57175bcbfeacde46c598e3.zip cpython-3f8c6913b82ed9c05e57175bcbfeacde46c598e3.tar.gz cpython-3f8c6913b82ed9c05e57175bcbfeacde46c598e3.tar.bz2 |
bpo-34035: Fix several AttributeError in zipfile seek() methods. (GH-8527)
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/test/test_zipfile.py | 4 | ||||
-rw-r--r-- | Lib/zipfile.py | 7 |
2 files changed, 7 insertions, 4 deletions
diff --git a/Lib/test/test_zipfile.py b/Lib/test/test_zipfile.py index 61c3e34..ac9a4ff 100644 --- a/Lib/test/test_zipfile.py +++ b/Lib/test/test_zipfile.py @@ -1646,6 +1646,8 @@ class OtherTests(unittest.TestCase): self.assertEqual(fp.read(5), txt[bloc:bloc+5]) fp.seek(0, os.SEEK_END) self.assertEqual(fp.tell(), len(txt)) + fp.seek(0, os.SEEK_SET) + self.assertEqual(fp.tell(), 0) # Check seek on memory file data = io.BytesIO() with zipfile.ZipFile(data, mode="w") as zipf: @@ -1661,6 +1663,8 @@ class OtherTests(unittest.TestCase): self.assertEqual(fp.read(5), txt[bloc:bloc+5]) fp.seek(0, os.SEEK_END) self.assertEqual(fp.tell(), len(txt)) + fp.seek(0, os.SEEK_SET) + self.assertEqual(fp.tell(), 0) def tearDown(self): unlink(TESTFN) diff --git a/Lib/zipfile.py b/Lib/zipfile.py index b90b60f..2757ce9 100644 --- a/Lib/zipfile.py +++ b/Lib/zipfile.py @@ -701,11 +701,11 @@ class _SharedFile: def seek(self, offset, whence=0): with self._lock: - if self.writing(): + if self._writing(): raise ValueError("Can't reposition in the ZIP file while " "there is an open writing handle on it. " "Close the writing handle before trying to read.") - self._file.seek(self._pos) + self._file.seek(offset, whence) self._pos = self._file.tell() return self._pos @@ -1021,14 +1021,13 @@ class ZipExtFile(io.BufferedIOBase): read_offset = 0 elif read_offset < 0: # Position is before the current position. Reset the ZipExtFile - self._fileobj.seek(self._orig_compress_start) self._running_crc = self._orig_start_crc self._compress_left = self._orig_compress_size self._left = self._orig_file_size self._readbuffer = b'' self._offset = 0 - self._decompressor = zipfile._get_decompressor(self._compress_type) + self._decompressor = _get_decompressor(self._compress_type) self._eof = False read_offset = new_pos |