Browse Source

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
tags/jackcess-1.2.8
James Ahlborn 12 years ago
parent
commit
ecb46de7fd

+ 3
- 1
src/java/com/healthmarketscience/jackcess/PageChannel.java View File



// re-encode page // re-encode page
encodedPage = _codecHandler.encodePage(page, pageNumber, pageOffset); encodedPage = _codecHandler.encodePage(page, pageNumber, pageOffset);

// reset position/limit in case they were affected by encoding
encodedPage.position(pageOffset).limit(pageOffset + writeLen);
} }


try { try {
encodedPage.position(pageOffset);
_channel.write(encodedPage, (getPageOffset(pageNumber) + pageOffset)); _channel.write(encodedPage, (getPageOffset(pageNumber) + pageOffset));
if(_autoSync) { if(_autoSync) {
flush(); flush();

+ 2
- 0
test/src/java/com/healthmarketscience/jackcess/CodecHandlerTest.java View File

throws IOException throws IOException
{ {
ByteBuffer bb = _bufH.getPageBuffer(_channel); ByteBuffer bb = _bufH.getPageBuffer(_channel);
bb.clear();
simpleEncode(page.array(), bb.array(), pageNumber, pageOffset, simpleEncode(page.array(), bb.array(), pageNumber, pageOffset,
page.limit()); page.limit());
return bb; return bb;
assertEquals(_channel.getFormat().PAGE_SIZE, page.limit()); assertEquals(_channel.getFormat().PAGE_SIZE, page.limit());


ByteBuffer bb = _bufH.getPageBuffer(_channel); ByteBuffer bb = _bufH.getPageBuffer(_channel);
bb.clear();
fullEncode(page.array(), bb.array(), pageNumber); fullEncode(page.array(), bb.array(), pageNumber);
return bb; return bb;
} }

Loading…
Cancel
Save