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