Author: centic
Date: Tue Sep 20 20:24:54 2016
New Revision: 1761636
URL: http://svn.apache.org/viewvc?rev=1761636&view=rev
Log:
Adjust handling of ByteBuffer some more
Modified:
poi/trunk/src/java/org/apache/poi/poifs/nio/FileBackedDataSource.java
Modified: poi/trunk/src/java/org/apache/poi/poifs/nio/FileBackedDataSource.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/poifs/nio/FileBackedDataSource.java?rev=1761636&r1=1761635&r2=1761636&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/poifs/nio/FileBackedDataSource.java
(original)
+++ poi/trunk/src/java/org/apache/poi/poifs/nio/FileBackedDataSource.java Tue
Sep 20 20:24:54 2016
@@ -88,27 +88,26 @@ public class FileBackedDataSource extend
throw new IndexOutOfBoundsException("Position " + position + " past
the end of the file");
}
- // Do we read or map (for read/write?
+ // Do we read or map (for read/write)?
ByteBuffer dst;
- int worked = -1;
if (writable) {
dst = channel.map(FileChannel.MapMode.READ_WRITE, position, length);
- worked = 0;
- // remember the buffer for cleanup if necessary
- buffersToClean.add(dst);
+
+ // remember this buffer for cleanup
+ buffersToClean.add(dst);
} else {
- // Read
+ // allocate the buffer on the heap if we cannot map the data in
directly
channel.position(position);
dst = ByteBuffer.allocate(length);
- worked = IOUtils.readFully(channel, dst);
- }
- // Check
- if(worked == -1) {
- throw new IndexOutOfBoundsException("Position " + position + " past
the end of the file");
+ // Read the contents and check that we could read some data
+ int worked = IOUtils.readFully(channel, dst);
+ if(worked == -1) {
+ throw new IndexOutOfBoundsException("Position " + position + "
past the end of the file");
+ }
}
- // Ready it for reading
+ // make it ready for reading
dst.position(0);
// All done
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]