You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by bo...@apache.org on 2020/01/05 15:08:27 UTC
[commons-compress] branch master updated: COMPRESS-477 fix writing
the number of entries to the EOCD record
This is an automated email from the ASF dual-hosted git repository.
bodewig pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-compress.git
The following commit(s) were added to refs/heads/master by this push:
new f161254 COMPRESS-477 fix writing the number of entries to the EOCD record
f161254 is described below
commit f16125435723d143183c9c45fd3a0f92bdf97ba3
Author: Stefan Bodewig <bo...@apache.org>
AuthorDate: Sun Jan 5 16:07:54 2020 +0100
COMPRESS-477 fix writing the number of entries to the EOCD record
---
.../compress/archivers/zip/ZipArchiveOutputStream.java | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveOutputStream.java b/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveOutputStream.java
index 345a5ad..0ad4f8b 100644
--- a/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveOutputStream.java
+++ b/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveOutputStream.java
@@ -1485,7 +1485,9 @@ public class ZipArchiveOutputStream extends ArchiveOutputStream {
}
// total number of entries in the central directory on this disk
- int numOfEntriesOnThisDisk = numberOfCDInDiskData.get(numberOfThisDisk) == null ? 0 : numberOfCDInDiskData.get(numberOfThisDisk);
+ int numOfEntriesOnThisDisk = isSplitZip
+ ? (numberOfCDInDiskData.get(numberOfThisDisk) == null ? 0 : numberOfCDInDiskData.get(numberOfThisDisk))
+ : numberOfEntries;
final byte[] numOfEntriesOnThisDiskData = ZipShort
.getBytes(Math.min(numOfEntriesOnThisDisk, ZIP64_MAGIC_SHORT));
writeCounted(numOfEntriesOnThisDiskData);
@@ -1568,9 +1570,10 @@ public class ZipArchiveOutputStream extends ArchiveOutputStream {
writeOut(ZipLong.getBytes(cdDiskNumberStart));
// total number of entries in the central directory on this disk
- int numOfEntriesOnThisDisk = numberOfCDInDiskData.get(numberOfThisDisk) == null ? 0 : numberOfCDInDiskData.get(numberOfThisDisk);
- final byte[] numOfEntriesOnThisDiskData = ZipEightByteInteger
- .getBytes(Math.min(numOfEntriesOnThisDisk, ZIP64_MAGIC_SHORT));
+ int numOfEntriesOnThisDisk = isSplitZip
+ ? (numberOfCDInDiskData.get(numberOfThisDisk) == null ? 0 : numberOfCDInDiskData.get(numberOfThisDisk))
+ : entries.size();
+ final byte[] numOfEntriesOnThisDiskData = ZipEightByteInteger.getBytes(numOfEntriesOnThisDisk);
writeOut(numOfEntriesOnThisDiskData);
// number of entries