You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ni...@apache.org on 2015/07/01 02:43:34 UTC

svn commit: r1688543 - in /poi/trunk/src: java/org/apache/poi/poifs/filesystem/NPOIFSDocument.java testcases/org/apache/poi/poifs/filesystem/TestNPOIFSMiniStore.java

Author: nick
Date: Wed Jul  1 00:43:33 2015
New Revision: 1688543

URL: http://svn.apache.org/r1688543
Log:
To better match OPOIFS, pad to the end of a block with 0xFF/-1

Modified:
    poi/trunk/src/java/org/apache/poi/poifs/filesystem/NPOIFSDocument.java
    poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSMiniStore.java

Modified: poi/trunk/src/java/org/apache/poi/poifs/filesystem/NPOIFSDocument.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/poifs/filesystem/NPOIFSDocument.java?rev=1688543&r1=1688542&r2=1688543&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/poifs/filesystem/NPOIFSDocument.java (original)
+++ poi/trunk/src/java/org/apache/poi/poifs/filesystem/NPOIFSDocument.java Wed Jul  1 00:43:33 2015
@@ -23,6 +23,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.nio.ByteBuffer;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
@@ -143,6 +144,15 @@ public final class NPOIFSDocument implem
            os.write(buf, 0, readBytes);
        }
        
+       // Pad to the end of the block with -1s
+       int usedInBlock = length % _block_size;
+       if (usedInBlock != 0 && usedInBlock != _block_size) {
+           int toBlockEnd = _block_size - usedInBlock;
+           byte[] padding = new byte[toBlockEnd];
+           Arrays.fill(padding, (byte)0xFF);
+           os.write(padding);
+       }
+       
        // Tidy and return the length
        os.close();
        return length;

Modified: poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSMiniStore.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSMiniStore.java?rev=1688543&r1=1688542&r2=1688543&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSMiniStore.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSMiniStore.java Wed Jul  1 00:43:33 2015
@@ -431,6 +431,7 @@ public final class TestNPOIFSMiniStore e
        assertEquals(POIFSConstants.END_OF_CHAIN,     fs.getNextBlock(3)); // Mini
        assertEquals(POIFSConstants.UNUSED_BLOCK,     fs.getNextBlock(4));
        
+       // First 2 Mini blocks will be used
        assertEquals(2, ministore.getFreeBlock());
        
        // Add one more mini-stream, and check
@@ -442,6 +443,7 @@ public final class TestNPOIFSMiniStore e
        assertEquals(POIFSConstants.END_OF_CHAIN,     fs.getNextBlock(3)); // Mini
        assertEquals(POIFSConstants.UNUSED_BLOCK,     fs.getNextBlock(4));
        
+       // One more mini-block will be used
        assertEquals(3, ministore.getFreeBlock());
        
        // Check the contents too



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org