RFR: 8304831: TextFlow.hitTest.insertionIndex incorrect with surrogate pairs [v4]

Andy Goryachev angorya at openjdk.org
Fri Jun 2 19:44:17 UTC 2023


On Fri, 2 Jun 2023 19:18:13 GMT, Phil Race <prr at openjdk.org> wrote:

>> 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
>                     }
> 
> ...

you are right, it cannot be explained by a null text.

so if i understand you correctly, the question is about validity of `insertionIndex += 1` on lines 463 and 469.

463: should it be set to text.length() instead?

469: since text==null, could `insertionIndex = charIndex + 1` be correct?  

And also, is it possible at all that text == null within PrismTextLayout?

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

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


More information about the openjfx-dev mailing list