On Fri, 2 Jun 2023 18:50:07 GMT, Andy Goryachev <ango...@openjdk.org> wrote:

>> I did note that TextFlow passed null which really looked like a WIP to me 
>> but its a separate issue.
>> The exception in 8302511 which is the entire subject of that bug isn't 
>> possible if text == null.
>> My point is that if you pass an incorrect charIndex to 
>> BreakIterator.following() you'll get the same exception
>> in your copy of that code. So how are you making sure you never do that ?
>
> The exception in 8302511 was likely caused by a prior exception due to null 
> text, which corrupted insertionIndex value in HitInfo.
> 
> The goal of this change is to always compute insertionIndex (an I believe we 
> do it correctly this time).

No, it wasn't due to null text. That is provably impossible.

The exception from JDK-8302511 is as follows (copied from the bug report).

Exception in thread "JavaFX Application Thread" 
java.lang.IllegalArgumentException: offset out of bounds 
at 
java.base/sun.text.RuleBasedBreakIterator.checkOffset(RuleBasedBreakIterator.java:730)
 
at 
java.base/sun.text.RuleBasedBreakIterator.following(RuleBasedBreakIterator.java:744)
 
at javafx.graphics/javafx.scene.text.HitInfo.getInsertionIndex(HitInfo.java:84) 
at javafx.graphics/javafx.scene.text.HitInfo.toString(HitInfo.java:100) 
Look at the code in HitInfo.java referenced in JDK-8302511,  the code at line 
84 can only be reached if text != null
..
              if (text != null) {
                    // Skip complex character clusters / ligatures.
                    int next;
                    synchronized(charIterator) {
                        charIterator.setText(text);
                        next = charIterator.following(insertionIndex);   // 
this is line 84
                    }

...

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

PR Review Comment: https://git.openjdk.org/jfx/pull/1091#discussion_r1214735858

Reply via email to