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