RFR: 8303026: [TextField] IOOBE on setting text with control characters that replaces existing text [v2]
Ambarish Rapte
arapte at openjdk.org
Thu Mar 2 09:29:15 UTC 2023
On Wed, 22 Feb 2023 11:08:14 GMT, Jose Pereda <jpereda at openjdk.org> wrote:
>> This PR fixes a regression after [JDK-8212102](https://bugs.openjdk.org/browse/JDK-8212102).
>>
>> When a TextField control has some previous content, and new text with only invalid characters (0x7F, new line, tabs, <0x20) is set, `TextInputControl::filterInput` is used to strip them out, and the new text has length 0.
>>
>> During the refactoring in JDK-8212102, the checks:
>>
>> int length = txt.length();
>> if (end > start + length) end = length;
>> if (start > length-1) start = end = 0;
>>
>> were removed.
>>
>> In this particular case, when the new filtered text has length 0, we need those checks, so start and end are set to 0, and txt.substring(start, end) doesn't throw the IOOBE anymore.
>>
>> A test is added to verify this scenario. It fails with the proposed patch, passes with it.
>
> Jose Pereda has updated the pull request incrementally with one additional commit since the last revision:
>
> add curly braces
Marked as reviewed by arapte (Reviewer).
The regression bug-id mentioned in PR description is incorrect: [JDK-8212102](https://bugs.openjdk.org/browse/JDK-8212102) is a similar bug. and, [JDK-8176270](https://bugs.openjdk.org/browse/JDK-8176270) is the regression causing bug, which correctly mentioned in JBS. I would recommend to correct the description for correct record.
The fix itself looks good.
-------------
PR: https://git.openjdk.org/jfx/pull/1043
More information about the openjfx-dev
mailing list