]> source.dussan.org Git - jackcess.git/commitdiff
reset position/limit after encoding page
authorJames Ahlborn <jtahlborn@yahoo.com>
Thu, 14 Jun 2012 03:49:44 +0000 (03:49 +0000)
committerJames Ahlborn <jtahlborn@yahoo.com>
Thu, 14 Jun 2012 03:49:44 +0000 (03:49 +0000)
git-svn-id: https://svn.code.sf.net/p/jackcess/code/jackcess/trunk@630 f203690c-595d-4dc9-a70b-905162fa7fd2

src/java/com/healthmarketscience/jackcess/PageChannel.java
test/src/java/com/healthmarketscience/jackcess/CodecHandlerTest.java

index 8759fcffdb1d665ac38d1bf020e1b8984794002c..ae30ba7299630b43658bdc6bb7b247f6dfc4dff6 100644 (file)
@@ -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();
index 119a6e3fd0170526a7bc346964d96664bc137fe8..c525efaee9940bd65d8dc24df7460e95e06c3e4a 100644 (file)
@@ -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;
     }