We just discovered this problem as well. Here's a test case that fails without the fix. Index: src/test/org/apache/lucene/index/TestCompoundFile.java =================================================================== --- src/test/org/apache/lucene/index/TestCompoundFile.java (revision 382277) +++ src/test/org/apache/lucene/index/TestCompoundFile.java (working copy) @@ -622,4 +622,26 @@ is.close(); cr.close(); } + + /** This test that writes larger than the size of the buffer output + * will correctly increment the file pointer. + */ + public void testLargeWrites() throws IOException { + IndexOutput os = dir.createOutput("testBufferStart.txt"); + + byte[] largeBuf = new byte[2048]; + for (int i=0; i ... > } else { > // is data larger then buffer? > if (length > BUFFER_SIZE) { > // we flush the buffer > if (bufferPosition > 0) > flush(); > // and write data at once > flushBuffer(b, length); > } else { > ... > > the bufferStart is not incremented after the flushBuffer method is > called. So if someone calls getFilePointer just afterwards, it will > give the wrong result (hit it with the compound format). A simple fix > would be to add bufferStart += length; just after flushBuffer. Can you please file a bug for this and attach a bug to it with a unit test that illustrates the problem? This looks like something that could warrant a 1.9.1 release, so we must proceed carefully. Thanks, Doug --------------------------------------------------------------------- To unsubscribe, e-mail: java-dev-unsubscribe@lucene.apache.org For additional commands, e-mail: java-dev-help@lucene.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: java-dev-unsubscribe@lucene.apache.org For additional commands, e-mail: java-dev-help@lucene.apache.org