On Mon, 3 Oct 2022 16:07:15 GMT, Alexey Ivanov <aiva...@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

Reply via email to