Skip to content
This repository was archived by the owner on Jan 9, 2025. It is now read-only.

Commit 053af31

Browse files
authored
Int list fix2 (#477)
* addAll fix * null add, set value to zero. * fixes
1 parent 086e6ad commit 053af31

1 file changed

Lines changed: 6 additions & 5 deletions

File tree

base/src/main/java/one/microstream/collections/_intList.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ private int internalInputArray(final int index, final int[] elements, final int
227227
if(this.data.length - this.size >= elementsSize)
228228
{
229229
// simply free up enough space at index and slide in new elements
230-
System.arraycopy(this.data, index, this.data, index + elementsSize, elementsSize);
230+
System.arraycopy(this.data, index, this.data, index + elementsSize, this.size - index);
231231
System.arraycopy(elements , 0, this.data, index , elementsSize);
232232
this.size += elementsSize;
233233
return elementsSize;
@@ -271,7 +271,7 @@ private int internalInputArray(final int index, final int[] elements, final int
271271
*/
272272
final int[] data;
273273
System.arraycopy(this.data, 0, data = new int[newCapacity], 0, index);
274-
System.arraycopy(this.data, index, data, index + elementsSize, elementsSize);
274+
System.arraycopy(this.data, index, data, index + elementsSize, this.size - index);
275275
System.arraycopy(elements , 0, this.data = data, index, elementsSize);
276276
this.size = newSize;
277277
return elementsSize;
@@ -1012,14 +1012,14 @@ public _intList addAll(final int[] elements, final int offset, final int length)
10121012
else
10131013
{
10141014
final int bound;
1015-
if((bound = length + length) < -1)
1015+
if((bound = offset + length) < -1)
10161016
{
10171017
throw new ArrayIndexOutOfBoundsException(bound + 1);
10181018
}
10191019
this.ensureFreeCapacity(-length); // increaseCapacity
10201020
final int[] data = this.data;
10211021
int size = this.size;
1022-
for(int i = length; i > bound; i--)
1022+
for(int i = offset; i > bound; i--)
10231023
{
10241024
data[size++] = elements[i];
10251025
}
@@ -1043,7 +1043,8 @@ public boolean nullAdd()
10431043
}
10441044
System.arraycopy(this.data, 0, this.data = new int[(int)(this.data.length * 2.0f)], 0, this.size);
10451045
}
1046-
this.size++; // as overhang array elements are guaranteed to be null, the array setting can be spared
1046+
this.data[size] = 0; // It has to be here. For example, operation 'remove' changes the removed value to Integer.MIN_VALUE.
1047+
this.size++;
10471048
return true;
10481049
}
10491050

0 commit comments

Comments
 (0)