diff options
author | James Ahlborn <jtahlborn@yahoo.com> | 2012-06-14 03:49:44 +0000 |
---|---|---|
committer | James Ahlborn <jtahlborn@yahoo.com> | 2012-06-14 03:49:44 +0000 |
commit | ecb46de7fd6e55b83e2b0babd19a77f175f015b3 (patch) | |
tree | bc7fe71961b187911c62fa306858ce40634f322e | |
parent | acdd431dcf6417e90c01429fb546a08c541e0676 (diff) | |
download | jackcess-ecb46de7fd6e55b83e2b0babd19a77f175f015b3.tar.gz jackcess-ecb46de7fd6e55b83e2b0babd19a77f175f015b3.zip |
reset position/limit after encoding page
git-svn-id: https://svn.code.sf.net/p/jackcess/code/jackcess/trunk@630 f203690c-595d-4dc9-a70b-905162fa7fd2
-rw-r--r-- | src/java/com/healthmarketscience/jackcess/PageChannel.java | 4 | ||||
-rw-r--r-- | test/src/java/com/healthmarketscience/jackcess/CodecHandlerTest.java | 2 |
2 files changed, 5 insertions, 1 deletions
diff --git a/src/java/com/healthmarketscience/jackcess/PageChannel.java b/src/java/com/healthmarketscience/jackcess/PageChannel.java index 8759fcf..ae30ba7 100644 --- a/src/java/com/healthmarketscience/jackcess/PageChannel.java +++ b/src/java/com/healthmarketscience/jackcess/PageChannel.java @@ -243,10 +243,12 @@ public class PageChannel implements Channel, Flushable { // re-encode page encodedPage = _codecHandler.encodePage(page, pageNumber, pageOffset); + + // reset position/limit in case they were affected by encoding + encodedPage.position(pageOffset).limit(pageOffset + writeLen); } try { - encodedPage.position(pageOffset); _channel.write(encodedPage, (getPageOffset(pageNumber) + pageOffset)); if(_autoSync) { flush(); diff --git a/test/src/java/com/healthmarketscience/jackcess/CodecHandlerTest.java b/test/src/java/com/healthmarketscience/jackcess/CodecHandlerTest.java index 119a6e3..c525efa 100644 --- a/test/src/java/com/healthmarketscience/jackcess/CodecHandlerTest.java +++ b/test/src/java/com/healthmarketscience/jackcess/CodecHandlerTest.java @@ -235,6 +235,7 @@ public class CodecHandlerTest extends TestCase throws IOException { ByteBuffer bb = _bufH.getPageBuffer(_channel); + bb.clear(); simpleEncode(page.array(), bb.array(), pageNumber, pageOffset, page.limit()); return bb; @@ -268,6 +269,7 @@ public class CodecHandlerTest extends TestCase assertEquals(_channel.getFormat().PAGE_SIZE, page.limit()); ByteBuffer bb = _bufH.getPageBuffer(_channel); + bb.clear(); fullEncode(page.array(), bb.array(), pageNumber); return bb; } |