Skip to content

Commit e76f9a1

Browse files
committed
Fix bytes between entries be removed when removed is passed
1 parent 926338c commit e76f9a1

File tree

2 files changed

+6
-0
lines changed

2 files changed

+6
-0
lines changed

Lib/test/test_zipfile/test_core.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1846,6 +1846,7 @@ def test_repack_bytes_between_files(self):
18461846
for i, (file, data) in enumerate(self.test_files):
18471847
zh.writestr(file, data)
18481848
fh.write(b' dummy bytes ')
1849+
zh.start_dir = fh.tell()
18491850
with zipfile.ZipFile(TESTFN, 'a', self.compression) as zh:
18501851
for i in ii:
18511852
zh.remove(self.test_files[i][0])
@@ -2168,6 +2169,7 @@ def test_repack_removed_bytes_between_files(self):
21682169
zh.writestr(file, data)
21692170
expected_zinfos.append(ComparableZipInfo(zh.getinfo(file)))
21702171
fh.write(b' dummy bytes ')
2172+
zh.start_dir = fh.tell()
21712173
expected_size = os.path.getsize(TESTFN)
21722174

21732175
# do the removal and check the result
@@ -2176,6 +2178,7 @@ def test_repack_removed_bytes_between_files(self):
21762178
for i, (file, data) in enumerate(self.test_files):
21772179
zh.writestr(file, data)
21782180
fh.write(b' dummy bytes ')
2181+
zh.start_dir = fh.tell()
21792182
with zipfile.ZipFile(TESTFN, 'a', self.compression) as zh:
21802183
zinfos = [zh.remove(self.test_files[i][0]) for i in ii]
21812184
zh.repack(zinfos)

Lib/zipfile/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1469,6 +1469,9 @@ def repack(self, zfile, removed=None):
14691469
raise BadZipFile(
14701470
f"Overlapped entries: {zinfo.orig_filename!r} ")
14711471

1472+
if removed is not None and zinfo not in removed_zinfos:
1473+
used_entry_size = entry_size
1474+
14721475
entry_size_list.append(entry_size)
14731476
used_entry_size_list.append(used_entry_size)
14741477

0 commit comments

Comments
 (0)