Author: bodewig
Date: Mon Mar 30 15:07:54 2009
New Revision: 760000

URL: http://svn.apache.org/viewvc?rev=760000&view=rev
Log:
make closeArchiveEntry a NOP if called repeatedly.  This makes ArTestCase fail 
for all platforms consistently 8-)

Modified:
    
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ar/ArArchiveOutputStream.java
    
commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/ArTestCase.java

Modified: 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ar/ArArchiveOutputStream.java
URL: 
http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ar/ArArchiveOutputStream.java?rev=760000&r1=759999&r2=760000&view=diff
==============================================================================
--- 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ar/ArArchiveOutputStream.java
 (original)
+++ 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ar/ArArchiveOutputStream.java
 Mon Mar 30 15:07:54 2009
@@ -35,6 +35,7 @@
     private long archiveOffset = 0;
     private long entryOffset = 0;
     private ArArchiveEntry prevEntry;
+    private boolean haveUnclosedEntry = true;
 
     public ArArchiveOutputStream( final OutputStream pOut ) {
         this.out = pOut;
@@ -47,10 +48,11 @@
     }
 
     public void closeArchiveEntry() throws IOException {
-        if ((entryOffset % 2) != 0) {
+        if (prevEntry != null && haveUnclosedEntry && (entryOffset % 2) != 0) {
             out.write('\n'); // Pad byte
             archiveOffset++;
         }
+        haveUnclosedEntry = false;
     }
 
     public void putArchiveEntry( final ArchiveEntry pEntry ) throws 
IOException {
@@ -70,6 +72,7 @@
         archiveOffset += writeEntryHeader(pArEntry);
 
         entryOffset = 0;
+        haveUnclosedEntry = true;
     }
 
     private long fill( final long pOffset, final long pNewOffset, final char 
pFill ) throws IOException { 

Modified: 
commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/ArTestCase.java
URL: 
http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/ArTestCase.java?rev=760000&r1=759999&r2=760000&view=diff
==============================================================================
--- 
commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/ArTestCase.java
 (original)
+++ 
commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/ArTestCase.java
 Mon Mar 30 15:07:54 2009
@@ -89,10 +89,10 @@
     public void testArDelete() throws Exception {
         final File output = new File(dir, "bla.ar");
 
+        final File file1 = getFile("test1.xml");
+        final File file2 = getFile("test2.xml");
         {
             // create
-            final File file1 = getFile("test1.xml");
-            final File file2 = getFile("test2.xml");
 
             final OutputStream out = new FileOutputStream(output);
             final ArchiveOutputStream os = new 
ArchiveStreamFactory().createArchiveOutputStream("ar", out);
@@ -107,7 +107,10 @@
             out.close();
         }
 
-        assertEquals(282, output.length());
+        assertEquals(8
+                     + 60 + file1.length() + (file1.length() % 2)
+                     + 60 + file2.length() + (file2.length() % 2),
+                     output.length());
 
         final File output2 = new File(dir, "bla2.ar");
 


Reply via email to