7 okt 2007 kl. 13.47 skrev Michael McCandless:


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.

Hmm, OK.

But I don't understand why there is such a limit, and what could go wrong if one would start allowing smaller arrays?

Nor can I find any use of this method in the trunk, except for in a test case.

--
karl





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]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to