I think the intention of that method is to load all norms for that reader into the byte array, so I think it's reasonable that an exception is thrown if you provide a byte array that's too small.
Though maybe it would be friendlier to throw an IllegalArgumentException that says "the byte array is not long enough"? Mike "Karl Wettin" <[EMAIL PROTECTED]> wrote: > 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] > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]