Bug in documentswriter.cs
-------------------------

                 Key: LUCENENET-145
                 URL: https://issues.apache.org/jira/browse/LUCENENET-145
             Project: Lucene.Net
          Issue Type: Bug
            Reporter: Iliev Andrei
            Priority: Critical


Bad conversion from java source code. For multiple dimention array .length in 
java   returns the number of dimensions. In c# .Length - returns the total 
number of elements in all dimensions. This bug sometimes lead to 
IndexOutOfRangeException as reported in 
http://www.mail-archive.com/[email protected]/msg01277.html

See the follwing code:
1)class ByteBlockPool. 
  1) Method Reset()
wrong:
//Array.Clear(buffers[i], 0, buffers.Length); 
should be:
Array.Clear(buffers[i], 0, buffers[i].Length); 

2) public void  NextBuffer()
wrong:
//if (1 + bufferUpto == buffers.Length)
//byte[][] newBuffers = new byte[(int) (buffers.Length * 1.5)][];
//Array.Copy(buffers, 0, newBuffers, 0, buffers.Length);
should be:
if (1 + bufferUpto == buffers.GetLength(0))  
byte[][] newBuffers = new byte[(int)(buffers.GetLength(0) * 1.5)][];
Array.Copy(buffers, 0, newBuffers, 0, buffers.GetLength(0));
2)class CharBlockPool
1)public void  NextBuffer()
wrong:
//if (1 + bufferUpto == buffers.Length){
//char[][] newBuffers = new char[(int) (buffers.Length * 1.5)][];
//Array.Copy(buffers, 0, newBuffers, 0, buffers.Length);
should be:
if (1 + bufferUpto == buffers.GetLength(0)){
char[][] newBuffers = new char[(int)(buffers.GetLength(0) * 1.5)][];
Array.Copy(buffers, 0, newBuffers, 0, buffers.GetLength(0));






-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to