On Tue, 1 Sep 2026 06:22:48 GMT, Yunbo Zhang <[email protected]> wrote:
> Please review this small fix. > > **Problem:** > > `MethodHandles.foldArguments` throws `ArrayIndexOutOfBoundsException` instead > of `IllegalArgumentException` for negative `pos` values, which violates the > API's exception contract. Extreme values such as `Integer.MAX_VALUE` can also > overflow the existing addition-based bounds check. > > **Fix:** > > Validate that `foldPos` is non-negative and use: > > > foldPos <= targetType.parameterCount() - foldVals - foldArgs > > > **Testing:** > > - Added tests for invalid positions and the valid boundary case where a > zero-argument `void` combiner is folded at the end of the target parameter > list. > - `make test TEST=test/jdk/java/lang/invoke`: 198 passed, 4 excluded, 0 > failed. > > --------- > - [x] I confirm that I make this contribution in accordance with the [OpenJDK > Interim AI Policy](https://openjdk.org/legal/ai). Thanks for fixing this! The changes look good, but this will also need a CSR. test/jdk/java/lang/invoke/FoldTest.java line 105: > 103: Integer.MAX_VALUE > 104: }; > 105: for (int pos : invalidPositions) { I suggest using `@ParameterizedTest` as that would still run all the cases instead of a failure. ------------- PR Review: https://git.openjdk.org/jdk/pull/32618#pullrequestreview-5304595400 PR Review Comment: https://git.openjdk.org/jdk/pull/32618#discussion_r4093743949
