Title: [243908] trunk/Source/WebCore
Revision
243908
Author
[email protected]
Date
2019-04-04 14:47:29 -0700 (Thu, 04 Apr 2019)

Log Message

Fix rare crash under collectRelatedCoordinatedScrollingNodes()
https://bugs.webkit.org/show_bug.cgi?id=196610
rdar://problem/49595426

Reviewed by Zalan Bujtas.

hasCompositedScrollableOverflow() doesn't check whether a layer is composited (it has
to report the right status before layers have been created), so collectRelatedCoordinatedScrollingNodes()
needs to check whether there's backing.

* rendering/RenderLayerCompositor.cpp:
(WebCore::collectRelatedCoordinatedScrollingNodes):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (243907 => 243908)


--- trunk/Source/WebCore/ChangeLog	2019-04-04 21:39:16 UTC (rev 243907)
+++ trunk/Source/WebCore/ChangeLog	2019-04-04 21:47:29 UTC (rev 243908)
@@ -1,5 +1,20 @@
 2019-04-04  Simon Fraser  <[email protected]>
 
+        Fix rare crash under collectRelatedCoordinatedScrollingNodes()
+        https://bugs.webkit.org/show_bug.cgi?id=196610
+        rdar://problem/49595426
+
+        Reviewed by Zalan Bujtas.
+
+        hasCompositedScrollableOverflow() doesn't check whether a layer is composited (it has
+        to report the right status before layers have been created), so collectRelatedCoordinatedScrollingNodes()
+        needs to check whether there's backing.
+
+        * rendering/RenderLayerCompositor.cpp:
+        (WebCore::collectRelatedCoordinatedScrollingNodes):
+
+2019-04-04  Simon Fraser  <[email protected]>
+
         Move "inProgrammaticScroll" down to ScrollableArea
         https://bugs.webkit.org/show_bug.cgi?id=196614
 

Modified: trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp (243907 => 243908)


--- trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp	2019-04-04 21:39:16 UTC (rev 243907)
+++ trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp	2019-04-04 21:47:29 UTC (rev 243908)
@@ -2987,11 +2987,11 @@
         auto* compositedAncestor = layer.ancestorCompositingLayer();
         for (const auto* currLayer = layer.parent(); currLayer != compositedAncestor; currLayer = currLayer->parent()) {
             if (currLayer->hasCompositedScrollableOverflow()) {
-                auto scrollingNodeID = currLayer->backing()->scrollingNodeIDForRole(ScrollCoordinationRole::Scrolling);
+                auto scrollingNodeID = currLayer->isComposited() ? currLayer->backing()->scrollingNodeIDForRole(ScrollCoordinationRole::Scrolling) : 0;
                 if (scrollingNodeID)
                     overflowNodeData.append(scrollingNodeID);
                 else
-                    LOG(Scrolling, "Layer %p doesn't have scrolling node ID yet", &layer);
+                    LOG(Scrolling, "Layer %p isn't composited or doesn't have scrolling node ID yet", &layer);
             }
         }
         break;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to