RFR: 6187113: DefaultListSelectionModel.removeIndexInterval(0, Integer.MAX_VALUE) fails [v2]

Prasanta Sadhukhan psadhukhan at openjdk.org
Fri Oct 7 08:54:30 UTC 2022


On Mon, 3 Oct 2022 16:07:15 GMT, Alexey Ivanov <aivanov at openjdk.org> wrote:

>>> To remove an index, I guess we need to first do setSelection where we will already throw IOOBE so I guess that's why this method does not mention or handle it explicitly
>> 
>> It's not required by the implementation.
>> 
>> 
>>         selectionModel.setSelectionInterval(0, 1);
>>         selectionModel.removeIndexInterval(Integer.MIN_VALUE, -1);
>> 
>> 
>> works … that is the call to `removeIndexInterval` throws the `IndexOutOfBoundsException` because it tries to copy the bits in the removed interval. If `rmMinIndex` is negative, the implementation may throw IOOBE before doing other work as an optimisation or rely on it being thrown from the code below as it does now.
>> 
>> Other methods specify the behaviour for negative parameters, this method would benefit from it too.
>
> I suggest amending `setSelectionInterval` to throw IOOBE if `Integer.MAX_VALUE` is passed.
> 
> Then I suggest amending `removeIndexInterval` to throw IOOBE if a negative value is passed or an index is `Integer.MAX_VALUE`. Explicit handling of negative values could be an optimisation made in addition to handling `MAX_VALUE`.
> 
> In both cases, the spec needs to be updated, and therefore the CSR will be required.

I guess Integer.MAX_VALUE should be valid "int" value, its because of internal calculation which is causing it to overflow so I guess we should not update the spec for wrongful calculation. 
I have fixed the overflow in setSelectionInterval.

-------------

PR: https://git.openjdk.org/jdk/pull/10409



More information about the client-libs-dev mailing list