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 2014/12/28 11:32:25 UTC

svn commit: r1648164 - /commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveOutputStream.java

Author: bodewig
Date: Sun Dec 28 10:32:25 2014
New Revision: 1648164

URL: http://svn.apache.org/r1648164
Log:
don't duplicate the 'do I need zip64' check when creating central directory headers

Modified:
    commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveOutputStream.java

Modified: commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveOutputStream.java
URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveOutputStream.java?rev=1648164&r1=1648163&r2=1648164&view=diff
==============================================================================
--- commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveOutputStream.java (original)
+++ commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveOutputStream.java Sun Dec 28 10:32:25 2014
@@ -1125,21 +1125,21 @@ public class ZipArchiveOutputStream exte
 
         handleZip64Extra(ze, lfhOffset, needsZip64Extra);
 
-        byte[] centralFileHeader = createCentralFileHeader(ze, getName(ze), lfhOffset);
+        byte[] centralFileHeader = createCentralFileHeader(ze, getName(ze), lfhOffset,
+                                                           needsZip64Extra);
         writeOut(centralFileHeader);
         written += centralFileHeader.length;
     }
+
     /**
      * Writes the central file header entry.
      * @param ze the entry to write
      * @param name The encoded name
      * @param lfhOffset Local file header offset for this file
      * @throws IOException on error
-     * @throws Zip64RequiredException if the archive's size exceeds 4
-     * GByte and {@link Zip64Mode #setUseZip64} is {@link
-     * Zip64Mode#Never}.
      */
-    private byte[] createCentralFileHeader(ZipArchiveEntry ze, ByteBuffer name, long lfhOffset) throws IOException {
+    private byte[] createCentralFileHeader(ZipArchiveEntry ze, ByteBuffer name, long lfhOffset,
+                                           boolean needsZip64Extra) throws IOException {
         byte[] extra = ze.getCentralDirectoryExtra();
 
         // file comment length
@@ -1154,21 +1154,6 @@ public class ZipArchiveOutputStream exte
 
         System.arraycopy(CFH_SIG,  0, buf, CFH_SIG_OFFSET, WORD);
 
-        final boolean needsZip64Extra = hasZip64Extra(ze)
-                || ze.getCompressedSize() >= ZIP64_MAGIC
-                || ze.getSize() >= ZIP64_MAGIC
-                || lfhOffset >= ZIP64_MAGIC;
-
-        if (needsZip64Extra && zip64Mode == Zip64Mode.Never) {
-            // must be the offset that is too big, otherwise an
-            // exception would have been throw in putArchiveEntry or
-            // closeArchiveEntry
-            throw new Zip64RequiredException(Zip64RequiredException
-                    .ARCHIVE_TOO_BIG_MESSAGE);
-        }
-
-        // todo: Do in caller !  handleZip64Extra(ze, lfhOffset, needsZip64Extra);
-
         // version made by
         // CheckStyle:MagicNumber OFF
         putShort((ze.getPlatform() << 8) | (!hasUsedZip64 ? DATA_DESCRIPTOR_MIN_VERSION : ZIP64_MIN_VERSION),