Title: [285192] trunk
Revision
285192
Author
[email protected]
Date
2021-11-02 18:47:56 -0700 (Tue, 02 Nov 2021)

Log Message

Crash in RenderLayer::rebuildZOrderLists
https://bugs.webkit.org/show_bug.cgi?id=230229

Patch by Gabriel Nava Marino <[email protected]> on 2021-11-02
Reviewed by Simon Fraser.

Source/WebCore:

Test: fast/layers/render-layer-rebuild-z-order-lists.html

To avoid operating on nullptr, allocate posZOrderList if it is null,
similar to how it is done in RenderLayer::collectLayers.

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::rebuildZOrderLists):

LayoutTests:

* fast/layers/render-layer-rebuild-z-order-lists-expected.txt: Added.
* fast/layers/render-layer-rebuild-z-order-lists.html: Added.
* platform/win/TestExpectations: Skip due to diag.showModal undefined in win.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (285191 => 285192)


--- trunk/LayoutTests/ChangeLog	2021-11-03 01:27:28 UTC (rev 285191)
+++ trunk/LayoutTests/ChangeLog	2021-11-03 01:47:56 UTC (rev 285192)
@@ -1,3 +1,14 @@
+2021-11-02  Gabriel Nava Marino  <[email protected]>
+
+        Crash in RenderLayer::rebuildZOrderLists
+        https://bugs.webkit.org/show_bug.cgi?id=230229
+
+        Reviewed by Simon Fraser.
+
+        * fast/layers/render-layer-rebuild-z-order-lists-expected.txt: Added.
+        * fast/layers/render-layer-rebuild-z-order-lists.html: Added.
+        * platform/win/TestExpectations: Skip due to diag.showModal undefined in win.
+
 2021-11-02  Robin Morisset  <[email protected]>
 
         Regression (r284330): [ macOS wk1 Debug ] webaudio/AudioBuffer/huge-buffer.html is a flaky timeout

Added: trunk/LayoutTests/fast/layers/render-layer-rebuild-z-order-lists-expected.txt (0 => 285192)


--- trunk/LayoutTests/fast/layers/render-layer-rebuild-z-order-lists-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/layers/render-layer-rebuild-z-order-lists-expected.txt	2021-11-03 01:47:56 UTC (rev 285192)
@@ -0,0 +1 @@
+PASS if this doesn't crash

Added: trunk/LayoutTests/fast/layers/render-layer-rebuild-z-order-lists.html (0 => 285192)


--- trunk/LayoutTests/fast/layers/render-layer-rebuild-z-order-lists.html	                        (rev 0)
+++ trunk/LayoutTests/fast/layers/render-layer-rebuild-z-order-lists.html	2021-11-03 01:47:56 UTC (rev 285192)
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style>
+* { z-index: -1; }
+html { position: sticky; }
+</style>
+<script>
+  _onload_ = () => {
+    diag = document.getElementById('diag0');
+    diag.showModal(); 
+    if (window.testRunner)
+        testRunner.dumpAsText();
+  }
+</script>
+</head>
+<body>
+<dialog id="diag0">
+PASS if this doesn't crash
+</dialog>
+</body>
+</html>

Modified: trunk/LayoutTests/platform/win/TestExpectations (285191 => 285192)


--- trunk/LayoutTests/platform/win/TestExpectations	2021-11-03 01:27:28 UTC (rev 285191)
+++ trunk/LayoutTests/platform/win/TestExpectations	2021-11-03 01:47:56 UTC (rev 285192)
@@ -3643,6 +3643,9 @@
 # Only Mac has implemented DictionaryLookup
 fast/layers/prevent-hit-test-during-layout.html [ Skip ]
 
+# Dialog showModal is disabled on Windows
+fast/layers/render-layer-rebuild-z-order-lists.html [ Skip ]
+
 # webrtc not supported
 imported/w3c/web-platform-tests/webrtc [ Skip ]
 webrtc [ Skip ]

Modified: trunk/Source/WebCore/ChangeLog (285191 => 285192)


--- trunk/Source/WebCore/ChangeLog	2021-11-03 01:27:28 UTC (rev 285191)
+++ trunk/Source/WebCore/ChangeLog	2021-11-03 01:47:56 UTC (rev 285192)
@@ -1,3 +1,18 @@
+2021-11-02  Gabriel Nava Marino  <[email protected]>
+
+        Crash in RenderLayer::rebuildZOrderLists
+        https://bugs.webkit.org/show_bug.cgi?id=230229
+
+        Reviewed by Simon Fraser.
+
+        Test: fast/layers/render-layer-rebuild-z-order-lists.html
+
+        To avoid operating on nullptr, allocate posZOrderList if it is null,
+        similar to how it is done in RenderLayer::collectLayers.
+
+        * rendering/RenderLayer.cpp:
+        (WebCore::RenderLayer::rebuildZOrderLists):
+
 2021-11-02  Robin Morisset  <[email protected]>
 
         Regression (r284330): [ macOS wk1 Debug ] webaudio/AudioBuffer/huge-buffer.html is a flaky timeout

Modified: trunk/Source/WebCore/rendering/RenderLayer.cpp (285191 => 285192)


--- trunk/Source/WebCore/rendering/RenderLayer.cpp	2021-11-03 01:27:28 UTC (rev 285191)
+++ trunk/Source/WebCore/rendering/RenderLayer.cpp	2021-11-03 01:47:56 UTC (rev 285192)
@@ -794,10 +794,14 @@
             auto backdropRenderer = renderer->backdropRenderer();
             if (backdropRenderer && backdropRenderer->hasLayer()) {
                 RenderLayer* layer = backdropRenderer->layer();
+                if (!posZOrderList)
+                    posZOrderList = makeUnique<Vector<RenderLayer*>>();
                 posZOrderList->append(layer);
             }
             if (renderer->hasLayer()) {
                 RenderLayer* layer = downcast<RenderLayerModelObject>(*renderer).layer();
+                if (!posZOrderList)
+                    posZOrderList = makeUnique<Vector<RenderLayer*>>();
                 posZOrderList->append(layer);
             }
         }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to