Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: abb17906be3a7d238fb402c40620576a6b8951e3
      
https://github.com/WebKit/WebKit/commit/abb17906be3a7d238fb402c40620576a6b8951e3
  Author: Alan Baradlay <za...@apple.com>
  Date:   2022-11-09 (Wed, 09 Nov 2022)

  Changed paths:
    M Source/WebCore/page/FrameView.cpp

  Log Message:
  -----------
  FrameView::m_pendingTextFragmentIndicatorRange may get reset unexpectedly 
when the render tree is dirty
https://bugs.webkit.org/show_bug.cgi?id=247687
<rdar://101652475>

Reviewed by Wenson Hsieh.

This is a speculative fix to prevent a crash in TextIterator (via 
scrollToTextFragmentRange).

The idea here is to prevent the scrolling code from re-entering layout (through 
plainText() -> TextIterator -> updateLayoutIgnorePendingStylesheets())
when the render tree becomes dirty earlier at performPostLayoutTasks.
When we call plainText() the second time inside scrollToTextFragmentRange, 
m_pendingTextFragmentIndicatorRange may have already been wiped out
as the result of re-entering layout through the first plainText() call.

* Source/WebCore/page/FrameView.cpp:
(WebCore::FrameView::scrollToTextFragmentRange):
1. Let's not scroll when the tree is dirty (the subsequent layout will call us 
again anyway)
2. cache m_pendingTextFragmentIndicatorRange to preserve the range even through 
re-entrancy.

Canonical link: https://commits.webkit.org/256506@main


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to