@@ -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