bodewig 2005/02/18 05:15:28 Modified: . WHATSNEW src/main/org/apache/tools/zip ZipOutputStream.java src/testcases/org/apache/tools/zip ZipOutputStreamTest.java Log: Allo zip to store files with size between 2GB and 4GB Revision Changes Path 1.750 +3 -0 ant/WHATSNEW Index: WHATSNEW =================================================================== RCS file: /home/cvs/ant/WHATSNEW,v retrieving revision 1.749 retrieving revision 1.750 diff -u -r1.749 -r1.750 --- WHATSNEW 18 Feb 2005 12:24:15 -0000 1.749 +++ WHATSNEW 18 Feb 2005 13:15:28 -0000 1.750 @@ -325,6 +325,9 @@ * <zip>'s defaultexcludes attribute was ignored when an archive was updated. Bugzilla Report 33412. +* <zip> couldn't store files with size between 2GB and 4GB (the + upper limit set by the ZIP format itself). Bugzilla Report 33310. + Changes from Ant 1.6.1 to Ant 1.6.2 =================================== 1.34 +18 -3 ant/src/main/org/apache/tools/zip/ZipOutputStream.java Index: ZipOutputStream.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/zip/ZipOutputStream.java,v retrieving revision 1.33 retrieving revision 1.34 diff -u -r1.33 -r1.34 --- ZipOutputStream.java 2 Feb 2005 23:55:51 -0000 1.33 +++ ZipOutputStream.java 18 Feb 2005 13:15:28 -0000 1.34 @@ -336,8 +336,8 @@ deflate(); } - entry.setSize(def.getTotalIn()); - entry.setComprSize(def.getTotalOut()); + entry.setSize(adjustToLong(def.getTotalIn())); + entry.setComprSize(adjustToLong(def.getTotalOut())); entry.setCrc(realCrc); def.reset(); @@ -877,4 +877,19 @@ out.write(data, offset, length); } } + + /** + * Assumes a negative integer really is a positive integer that + * has wrapped around and re-creates the original value. + * + * @since 1.34 + */ + protected static long adjustToLong(int i) { + if (i < 0) { + return 2 * ((long) Integer.MAX_VALUE) + 2 + i; + } else { + return i; + } + } + } 1.3 +10 -1 ant/src/testcases/org/apache/tools/zip/ZipOutputStreamTest.java Index: ZipOutputStreamTest.java =================================================================== RCS file: /home/cvs/ant/src/testcases/org/apache/tools/zip/ZipOutputStreamTest.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- ZipOutputStreamTest.java 12 Nov 2004 12:15:13 -0000 1.2 +++ ZipOutputStreamTest.java 18 Feb 2005 13:15:28 -0000 1.3 @@ -1,5 +1,5 @@ /* - * Copyright 2004 The Apache Software Foundation + * Copyright 2004-2005 The Apache Software Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -66,4 +66,13 @@ assertEquals(test.getValue(), zl.getValue()); } + public void testAdjustToLong() { + assertEquals((long) Integer.MAX_VALUE, + ZipOutputStream.adjustToLong(Integer.MAX_VALUE)); + assertEquals(((long) Integer.MAX_VALUE) + 1, + ZipOutputStream.adjustToLong(Integer.MAX_VALUE + 1)); + assertEquals(2 * ((long) Integer.MAX_VALUE), + ZipOutputStream.adjustToLong(2 * Integer.MAX_VALUE)); + } + }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]