I'm confused by this method. Why is the length set to maxDoc() and
not bytes.length? This means that the following snippet will throw an
ArrayIndexOutOfBoundsException in most cases:
byte[] b = new byte[1];
ir.norms(field, b, doc);
/** Read norms into a pre-allocated array. */
public synchronized void norms(String field, byte[] bytes, int
offset)
throws IOException {
ensureOpen();
Norm norm = (Norm) norms.get(field);
if (norm == null) {
System.arraycopy(fakeNorms(), 0, bytes, offset, maxDoc());
return;
}
if (norm.bytes != null) { // can copy from
cache
System.arraycopy(norm.bytes, 0, bytes, offset, maxDoc());
return;
}
// Read from disk. norm.in may be shared across multiple
norms and
// should only be used in a synchronized context.
norm.in.seek(norm.normSeek);
norm.in.readBytes(bytes, offset, maxDoc());
}
--
karl
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]