Thank you Ulf!

On 19.03.2014 2:12, Ulf Zibis wrote:
Am 18.03.2014 19:28, schrieb Ivan Gerasimov:

Assuming this last iteration is OK, should the next step be a CCC request?

Do you mean? :
     /*
      * ...
+ * It is assumed that fromIndex <= toIndex, otherwise the behaviour of this method is undefined.
      * ...
 -     *          toIndex < fromIndex})
      * ...
     */
     protected void removeRange(int fromIndex, int toIndex) {
         ...


The (fromIndex > toIndex) condition is checked now, so the behavior of the method is defined - it throws an exception.

Please remove and replace inline by size - toIndex:
 621         int numMoved = size - toIndex;


It is done this way throughout the class.
I don't think it has to be changed in this particular place.

Improving modCound handling can be done with a different RFE I guess, as it doesn't connected to the rest of the fix.

Sincerely yours,
Ivan


About modCount:

Wouldn't it be more correct to code? :

 616         if (fromIndex > toIndex) {
 617             throw new IndexOutOfBoundsException(
 618                     outOfBoundsMsg(fromIndex, toIndex));
 619         }
 620         try {
 621             modCount++;
622 System.arraycopy(elementData, toIndex, elementData, fromIndex,
 623                     size - toIndex);
 624         } catch (IndexOutOfBoundsException ioobe) {
 625             modCount--;
 626             throw ioobe;
 627         }

Of even better :

 000     private int[] modCount = { 0 };
 ...
 616         if (fromIndex > toIndex) {
 617             throw new IndexOutOfBoundsException(
 618                     outOfBoundsMsg(fromIndex, toIndex));
 619         }
620 System.arraycopy(elementData, toIndex, elementData, fromIndex,
 621                 size - toIndex, modCount);

Or :

 000 public class ArrayList ... implements ModCounter {
 001     private int modCount = 0;
 001     void incModCount() {
 001         modCount++;
 004    }
 ...
 616         if (fromIndex > toIndex) {
 617             throw new IndexOutOfBoundsException(
 618                     outOfBoundsMsg(fromIndex, toIndex));
 619         }
620 System.arraycopy(elementData, toIndex, elementData, fromIndex,
 621                 size - toIndex, this);

-Ulf





Reply via email to