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.

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

Commit messages:
 - Restore start, end checks in updateSelectedText

Changes: https://git.openjdk.org/jfx/pull/1043/files
 Webrev: https://webrevs.openjdk.org/?repo=jfx&pr=1043&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8303026
  Stats: 12 lines in 2 files changed: 10 ins; 0 del; 2 mod
  Patch: https://git.openjdk.org/jfx/pull/1043.diff
  Fetch: git fetch https://git.openjdk.org/jfx pull/1043/head:pull/1043

PR: https://git.openjdk.org/jfx/pull/1043

Reply via email to