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

Alexey Ivanov aivanov at openjdk.org
Mon Oct 3 16:09:20 UTC 2022


On Wed, 28 Sep 2022 09:51:08 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
>
>> 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.

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

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



More information about the client-libs-dev mailing list