diff --git a/Lib/test/test_zipfile/test_core.py b/Lib/test/test_zipfile/test_core.py index 28840e62db9..24c466132c5 100644 --- a/Lib/test/test_zipfile/test_core.py +++ b/Lib/test/test_zipfile/test_core.py @@ -1846,6 +1846,7 @@ def test_repack_bytes_between_files(self): for i, (file, data) in enumerate(self.test_files): zh.writestr(file, data) fh.write(b' dummy bytes ') + zh.start_dir = fh.tell() with zipfile.ZipFile(TESTFN, 'a', self.compression) as zh: for i in ii: zh.remove(self.test_files[i][0]) @@ -2168,6 +2169,7 @@ def test_repack_removed_bytes_between_files(self): zh.writestr(file, data) expected_zinfos.append(ComparableZipInfo(zh.getinfo(file))) fh.write(b' dummy bytes ') + zh.start_dir = fh.tell() expected_size = os.path.getsize(TESTFN) # do the removal and check the result @@ -2176,6 +2178,7 @@ def test_repack_removed_bytes_between_files(self): for i, (file, data) in enumerate(self.test_files): zh.writestr(file, data) fh.write(b' dummy bytes ') + zh.start_dir = fh.tell() with zipfile.ZipFile(TESTFN, 'a', self.compression) as zh: zinfos = [zh.remove(self.test_files[i][0]) for i in ii] zh.repack(zinfos) diff --git a/Lib/zipfile/__init__.py b/Lib/zipfile/__init__.py index 6ad4a3bd5f9..1a27fbeb354 100644 --- a/Lib/zipfile/__init__.py +++ b/Lib/zipfile/__init__.py @@ -1469,6 +1469,9 @@ def repack(self, zfile, removed=None): raise BadZipFile( f"Overlapped entries: {zinfo.orig_filename!r} ") + if removed is not None and zinfo not in removed_zinfos: + used_entry_size = entry_size + entry_size_list.append(entry_size) used_entry_size_list.append(used_entry_size)