Title: [167723] trunk/Source/WebCore
Revision
167723
Author
hy...@apple.com
Date
2014-04-23 14:27:54 -0700 (Wed, 23 Apr 2014)

Log Message

[New Multicolumn] Assertion failure in huge-column-count.html
https://bugs.webkit.org/show_bug.cgi?id=132071

Reviewed by Dean Jackson.

* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::regionAtBlockOffset):
Back out this change, since it wasn't general enough.

* rendering/RenderFlowThread.cpp:
(WebCore::RenderFlowThread::getRegionRangeForBox):
The real issue was that this loop needed to consider the actual box
rather than starting from the parent. This was a non-issue for normal
regions (which cannot have nested flow threads), but for columns, you 
have to consider the fact that the box could itself be a flow thread.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (167722 => 167723)


--- trunk/Source/WebCore/ChangeLog	2014-04-23 21:22:53 UTC (rev 167722)
+++ trunk/Source/WebCore/ChangeLog	2014-04-23 21:27:54 UTC (rev 167723)
@@ -1,3 +1,21 @@
+2014-04-23  David Hyatt  <hy...@apple.com>
+
+        [New Multicolumn] Assertion failure in huge-column-count.html
+        https://bugs.webkit.org/show_bug.cgi?id=132071
+
+        Reviewed by Dean Jackson.
+
+        * rendering/RenderBlock.cpp:
+        (WebCore::RenderBlock::regionAtBlockOffset):
+        Back out this change, since it wasn't general enough.
+
+        * rendering/RenderFlowThread.cpp:
+        (WebCore::RenderFlowThread::getRegionRangeForBox):
+        The real issue was that this loop needed to consider the actual box
+        rather than starting from the parent. This was a non-issue for normal
+        regions (which cannot have nested flow threads), but for columns, you 
+        have to consider the fact that the box could itself be a flow thread.
+
 2014-04-23  Andreas Kling  <akl...@apple.com>
 
         [iOS] Memory pressure notification should fire on main thread.

Modified: trunk/Source/WebCore/rendering/RenderBlock.cpp (167722 => 167723)


--- trunk/Source/WebCore/rendering/RenderBlock.cpp	2014-04-23 21:22:53 UTC (rev 167722)
+++ trunk/Source/WebCore/rendering/RenderBlock.cpp	2014-04-23 21:27:54 UTC (rev 167723)
@@ -4828,9 +4828,6 @@
 
 RenderRegion* RenderBlock::regionAtBlockOffset(LayoutUnit blockOffset) const
 {
-    if (isInFlowRenderFlowThread())
-        return 0;
-
     RenderFlowThread* flowThread = flowThreadContainingBlock();
     if (!flowThread || !flowThread->hasValidRegionInfo())
         return 0;

Modified: trunk/Source/WebCore/rendering/RenderFlowThread.cpp (167722 => 167723)


--- trunk/Source/WebCore/rendering/RenderFlowThread.cpp	2014-04-23 21:22:53 UTC (rev 167722)
+++ trunk/Source/WebCore/rendering/RenderFlowThread.cpp	2014-04-23 21:27:54 UTC (rev 167723)
@@ -771,13 +771,13 @@
     // should be equal with the region for the unsplittable box if any.
     RenderBox* topMostUnsplittable = nullptr;
     RenderBox* cb = const_cast<RenderBox*>(box);
-    do {
+    while (!cb->isRenderFlowThread()) {
         if (cb->isUnsplittableForPagination())
             topMostUnsplittable = cb;
         ASSERT(cb->parent());
         cb = cb->parent()->enclosingBox();
         ASSERT(cb);
-    } while (!cb->isRenderFlowThread());
+    }
 
     if (topMostUnsplittable) {
         if (getRegionRangeForBoxFromCachedInfo(topMostUnsplittable, startRegion, endRegion)) {
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to