Title: [268743] branches/safari-610.2.11.51-branch/Source/WebCore
Revision
268743
Author
alanc...@apple.com
Date
2020-10-20 10:17:59 -0700 (Tue, 20 Oct 2020)

Log Message

Cherry-pick r268701. rdar://problem/70488900

    Fix possible crash in GraphicsLayerCA::computeVisibleAndCoverageRect()
    https://bugs.webkit.org/show_bug.cgi?id=217930
    <rdar://problem/70316943>

    Reviewed by Tim Horton.

    If we made a m_overflowControlsHostLayerAncestorClippingStack, make sure we unparent
    its layers when tearing down the RenderLayerBacking, and when we determine that we
    longer need a m_ancestorClippingStack (having a m_overflowControlsHostLayerAncestorClippingStack
    implies that we have a m_ancestorClippingStack).

    * rendering/RenderLayerBacking.cpp:
    (WebCore::RenderLayerBacking::destroyGraphicsLayers):
    (WebCore::RenderLayerBacking::updateAncestorClipping):

    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@268701 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Modified Paths

Diff

Modified: branches/safari-610.2.11.51-branch/Source/WebCore/ChangeLog (268742 => 268743)


--- branches/safari-610.2.11.51-branch/Source/WebCore/ChangeLog	2020-10-20 17:16:16 UTC (rev 268742)
+++ branches/safari-610.2.11.51-branch/Source/WebCore/ChangeLog	2020-10-20 17:17:59 UTC (rev 268743)
@@ -1,3 +1,41 @@
+2020-10-20  Alan Coon  <alanc...@apple.com>
+
+        Cherry-pick r268701. rdar://problem/70488900
+
+    Fix possible crash in GraphicsLayerCA::computeVisibleAndCoverageRect()
+    https://bugs.webkit.org/show_bug.cgi?id=217930
+    <rdar://problem/70316943>
+    
+    Reviewed by Tim Horton.
+    
+    If we made a m_overflowControlsHostLayerAncestorClippingStack, make sure we unparent
+    its layers when tearing down the RenderLayerBacking, and when we determine that we
+    longer need a m_ancestorClippingStack (having a m_overflowControlsHostLayerAncestorClippingStack
+    implies that we have a m_ancestorClippingStack).
+    
+    * rendering/RenderLayerBacking.cpp:
+    (WebCore::RenderLayerBacking::destroyGraphicsLayers):
+    (WebCore::RenderLayerBacking::updateAncestorClipping):
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@268701 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2020-10-19  Simon Fraser  <simon.fra...@apple.com>
+
+            Fix possible crash in GraphicsLayerCA::computeVisibleAndCoverageRect()
+            https://bugs.webkit.org/show_bug.cgi?id=217930
+            <rdar://problem/70316943>
+
+            Reviewed by Tim Horton.
+
+            If we made a m_overflowControlsHostLayerAncestorClippingStack, make sure we unparent
+            its layers when tearing down the RenderLayerBacking, and when we determine that we
+            longer need a m_ancestorClippingStack (having a m_overflowControlsHostLayerAncestorClippingStack
+            implies that we have a m_ancestorClippingStack).
+
+            * rendering/RenderLayerBacking.cpp:
+            (WebCore::RenderLayerBacking::destroyGraphicsLayers):
+            (WebCore::RenderLayerBacking::updateAncestorClipping):
+
 2020-10-19  Kocsen Chung  <kocsen_ch...@apple.com>
 
         Cherry-pick r266787. rdar://problem/70447326

Modified: branches/safari-610.2.11.51-branch/Source/WebCore/rendering/RenderLayerBacking.cpp (268742 => 268743)


--- branches/safari-610.2.11.51-branch/Source/WebCore/rendering/RenderLayerBacking.cpp	2020-10-20 17:16:16 UTC (rev 268742)
+++ branches/safari-610.2.11.51-branch/Source/WebCore/rendering/RenderLayerBacking.cpp	2020-10-20 17:17:59 UTC (rev 268743)
@@ -583,11 +583,12 @@
 
     GraphicsLayer::clear(m_maskLayer);
 
-    if (m_ancestorClippingStack) {
-        for (auto& entry : m_ancestorClippingStack->stack())
-            GraphicsLayer::unparentAndClear(entry.clippingLayer);
-    }
+    if (m_ancestorClippingStack)
+        removeClippingStackLayers(*m_ancestorClippingStack);
 
+    if (m_overflowControlsHostLayerAncestorClippingStack)
+        removeClippingStackLayers(*m_overflowControlsHostLayerAncestorClippingStack);
+
     GraphicsLayer::unparentAndClear(m_contentsContainmentLayer);
     GraphicsLayer::unparentAndClear(m_foregroundLayer);
     GraphicsLayer::unparentAndClear(m_backgroundLayer);
@@ -1937,8 +1938,13 @@
         }
     } else if (m_ancestorClippingStack) {
         removeClippingStackLayers(*m_ancestorClippingStack);
-
         m_ancestorClippingStack = nullptr;
+        
+        if (m_overflowControlsHostLayerAncestorClippingStack) {
+            removeClippingStackLayers(*m_overflowControlsHostLayerAncestorClippingStack);
+            m_overflowControlsHostLayerAncestorClippingStack = nullptr;
+        }
+        
         layersChanged = true;
     }
     
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to