Title: [205439] releases/WebKitGTK/webkit-2.12
Revision
205439
Author
carlo...@webkit.org
Date
2016-09-05 02:17:09 -0700 (Mon, 05 Sep 2016)

Log Message

Merge r204951 - ASSERTION FAILED: contentSize >= 0 in WebCore::RenderFlexibleBox::adjustChildSizeForMinAndMax
https://bugs.webkit.org/show_bug.cgi?id=155700
<rdar://problem/27720727>

Reviewed by David Hyatt.

Source/WebCore:

RenderBox::m_minPreferredLogicalWidth/m_maxPreferredLogicalWidth don't need special initial value since
preferredLogicalWidthsDirty flag guards them. -1 as initial value can cause problems for renderers that don't
override RenderBox::computePreferredLogicalWidths().

Test: fast/ruby/assert-when-content-size-is-negative.html

* rendering/RenderBox.cpp:
(WebCore::RenderBox::RenderBox):
(WebCore::RenderBox::dirtyLineBoxes):
(WebCore::RenderBox::deleteLineBoxWrapper):
* rendering/RenderBox.h:

LayoutTests:

* fast/ruby/assert-when-content-size-is-negative-expected.txt: Added.
* fast/ruby/assert-when-content-size-is-negative.html: Added.

Modified Paths

Added Paths

Diff

Modified: releases/WebKitGTK/webkit-2.12/LayoutTests/ChangeLog (205438 => 205439)


--- releases/WebKitGTK/webkit-2.12/LayoutTests/ChangeLog	2016-09-05 09:09:52 UTC (rev 205438)
+++ releases/WebKitGTK/webkit-2.12/LayoutTests/ChangeLog	2016-09-05 09:17:09 UTC (rev 205439)
@@ -1,5 +1,16 @@
 2016-08-24  Zalan Bujtas  <za...@apple.com>
 
+        ASSERTION FAILED: contentSize >= 0 in WebCore::RenderFlexibleBox::adjustChildSizeForMinAndMax
+        https://bugs.webkit.org/show_bug.cgi?id=155700
+        <rdar://problem/27720727>
+
+        Reviewed by David Hyatt.
+
+        * fast/ruby/assert-when-content-size-is-negative-expected.txt: Added.
+        * fast/ruby/assert-when-content-size-is-negative.html: Added.
+
+2016-08-24  Zalan Bujtas  <za...@apple.com>
+
         ASSERTION FAILED: childrenInline() in WebCore::RenderBlockFlow::hasLines
         https://bugs.webkit.org/show_bug.cgi?id=139396
         <rdar://problem/27704339>

Added: releases/WebKitGTK/webkit-2.12/LayoutTests/fast/ruby/assert-when-content-size-is-negative-expected.txt (0 => 205439)


--- releases/WebKitGTK/webkit-2.12/LayoutTests/fast/ruby/assert-when-content-size-is-negative-expected.txt	                        (rev 0)
+++ releases/WebKitGTK/webkit-2.12/LayoutTests/fast/ruby/assert-when-content-size-is-negative-expected.txt	2016-09-05 09:17:09 UTC (rev 205439)
@@ -0,0 +1,4 @@
+This tests that inline does not assert when its composite state changes.
+if (window.testRunner) testRunner.dumpAsText();
+* { display: inline-flex; flex-basis: 1; }
+PASS if no assert in debug.

Added: releases/WebKitGTK/webkit-2.12/LayoutTests/fast/ruby/assert-when-content-size-is-negative.html (0 => 205439)


--- releases/WebKitGTK/webkit-2.12/LayoutTests/fast/ruby/assert-when-content-size-is-negative.html	                        (rev 0)
+++ releases/WebKitGTK/webkit-2.12/LayoutTests/fast/ruby/assert-when-content-size-is-negative.html	2016-09-05 09:17:09 UTC (rev 205439)
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>This tests that inline does not assert when its composite state changes.</title>
+<script>
+if (window.testRunner)
+    testRunner.dumpAsText();
+</script>
+<style>
+* {
+    display: inline-flex;
+    flex-basis: 1;
+}
+</style>
+</head>
+<body>
+PASS if no assert in debug.
+<frameset></frameset>
+</body>
+</html>

Modified: releases/WebKitGTK/webkit-2.12/Source/WebCore/ChangeLog (205438 => 205439)


--- releases/WebKitGTK/webkit-2.12/Source/WebCore/ChangeLog	2016-09-05 09:09:52 UTC (rev 205438)
+++ releases/WebKitGTK/webkit-2.12/Source/WebCore/ChangeLog	2016-09-05 09:17:09 UTC (rev 205439)
@@ -1,5 +1,25 @@
 2016-08-24  Zalan Bujtas  <za...@apple.com>
 
+        ASSERTION FAILED: contentSize >= 0 in WebCore::RenderFlexibleBox::adjustChildSizeForMinAndMax
+        https://bugs.webkit.org/show_bug.cgi?id=155700
+        <rdar://problem/27720727>
+
+        Reviewed by David Hyatt.
+
+        RenderBox::m_minPreferredLogicalWidth/m_maxPreferredLogicalWidth don't need special initial value since
+        preferredLogicalWidthsDirty flag guards them. -1 as initial value can cause problems for renderers that don't
+        override RenderBox::computePreferredLogicalWidths().    
+
+        Test: fast/ruby/assert-when-content-size-is-negative.html
+
+        * rendering/RenderBox.cpp:
+        (WebCore::RenderBox::RenderBox):
+        (WebCore::RenderBox::dirtyLineBoxes):
+        (WebCore::RenderBox::deleteLineBoxWrapper):
+        * rendering/RenderBox.h:
+
+2016-08-24  Zalan Bujtas  <za...@apple.com>
+
         ASSERTION FAILED: childrenInline() in WebCore::RenderBlockFlow::hasLines
         https://bugs.webkit.org/show_bug.cgi?id=139396
         <rdar://problem/27704339>

Modified: releases/WebKitGTK/webkit-2.12/Source/WebCore/rendering/RenderBox.cpp (205438 => 205439)


--- releases/WebKitGTK/webkit-2.12/Source/WebCore/rendering/RenderBox.cpp	2016-09-05 09:09:52 UTC (rev 205438)
+++ releases/WebKitGTK/webkit-2.12/Source/WebCore/rendering/RenderBox.cpp	2016-09-05 09:17:09 UTC (rev 205439)
@@ -120,9 +120,6 @@
 
 RenderBox::RenderBox(Element& element, Ref<RenderStyle>&& style, BaseTypeFlags baseTypeFlags)
     : RenderBoxModelObject(element, WTFMove(style), baseTypeFlags)
-    , m_minPreferredLogicalWidth(-1)
-    , m_maxPreferredLogicalWidth(-1)
-    , m_inlineBoxWrapper(nullptr)
 {
     setIsBox();
 }
@@ -129,9 +126,6 @@
 
 RenderBox::RenderBox(Document& document, Ref<RenderStyle>&& style, BaseTypeFlags baseTypeFlags)
     : RenderBoxModelObject(document, WTFMove(style), baseTypeFlags)
-    , m_minPreferredLogicalWidth(-1)
-    , m_maxPreferredLogicalWidth(-1)
-    , m_inlineBoxWrapper(nullptr)
 {
     setIsBox();
 }
@@ -2123,13 +2117,14 @@
 
 void RenderBox::dirtyLineBoxes(bool fullLayout)
 {
-    if (m_inlineBoxWrapper) {
-        if (fullLayout) {
-            delete m_inlineBoxWrapper;
-            m_inlineBoxWrapper = nullptr;
-        } else
-            m_inlineBoxWrapper->dirtyLineBoxes();
-    }
+    if (!m_inlineBoxWrapper)
+        return;
+    
+    if (fullLayout) {
+        delete m_inlineBoxWrapper;
+        m_inlineBoxWrapper = nullptr;
+    } else
+        m_inlineBoxWrapper->dirtyLineBoxes();
 }
 
 void RenderBox::positionLineBox(InlineElementBox& box)
@@ -2165,12 +2160,13 @@
 
 void RenderBox::deleteLineBoxWrapper()
 {
-    if (m_inlineBoxWrapper) {
-        if (!documentBeingDestroyed())
-            m_inlineBoxWrapper->removeFromParent();
-        delete m_inlineBoxWrapper;
-        m_inlineBoxWrapper = nullptr;
-    }
+    if (!m_inlineBoxWrapper)
+        return;
+    
+    if (!documentBeingDestroyed())
+        m_inlineBoxWrapper->removeFromParent();
+    delete m_inlineBoxWrapper;
+    m_inlineBoxWrapper = nullptr;
 }
 
 LayoutRect RenderBox::clippedOverflowRectForRepaint(const RenderLayerModelObject* repaintContainer) const

Modified: releases/WebKitGTK/webkit-2.12/Source/WebCore/rendering/RenderBox.h (205438 => 205439)


--- releases/WebKitGTK/webkit-2.12/Source/WebCore/rendering/RenderBox.h	2016-09-05 09:09:52 UTC (rev 205438)
+++ releases/WebKitGTK/webkit-2.12/Source/WebCore/rendering/RenderBox.h	2016-09-05 09:17:09 UTC (rev 205439)
@@ -740,7 +740,7 @@
     LayoutUnit m_maxPreferredLogicalWidth;
 
     // For inline replaced elements, the inline box that owns us.
-    InlineElementBox* m_inlineBoxWrapper;
+    InlineElementBox* m_inlineBoxWrapper { nullptr };
 
     // Our overflow information.
     RefPtr<RenderOverflow> m_overflow;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to