lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Karl Wettin <karl.wet...@gmail.com>
Subject norms(String field, byte[] bytes, int offset)
Date Sat, 06 Oct 2007 16:29:00 GMT
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: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org


Mime
View raw message