Title: [101733] trunk/Source/WebCore
Revision
101733
Author
[email protected]
Date
2011-12-01 18:39:14 -0800 (Thu, 01 Dec 2011)

Log Message

REGRESSION(r101268): Intermittent assertion failure in fast/block/child-not-removed-from-parent-lineboxes-crash.html
https://bugs.webkit.org/show_bug.cgi?id=73250

Reviewed by Darin Adler.

Reset the position when exiting early in layoutRunsAndFloatsInRange.

No new tests because we don't have a reliable reproduction for this failure.
However, the failure is caught by the existing fast/block/child-not-removed-from-parent-lineboxes-crash.html
intermittently with about 30% probability.

* rendering/RenderBlockLineLayout.cpp:
(WebCore::RenderBlock::layoutRunsAndFloatsInRange):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (101732 => 101733)


--- trunk/Source/WebCore/ChangeLog	2011-12-02 02:38:06 UTC (rev 101732)
+++ trunk/Source/WebCore/ChangeLog	2011-12-02 02:39:14 UTC (rev 101733)
@@ -1,3 +1,19 @@
+2011-12-01  Ryosuke Niwa  <[email protected]>
+
+        REGRESSION(r101268): Intermittent assertion failure in fast/block/child-not-removed-from-parent-lineboxes-crash.html
+        https://bugs.webkit.org/show_bug.cgi?id=73250
+
+        Reviewed by Darin Adler.
+
+        Reset the position when exiting early in layoutRunsAndFloatsInRange.
+
+        No new tests because we don't have a reliable reproduction for this failure.
+        However, the failure is caught by the existing fast/block/child-not-removed-from-parent-lineboxes-crash.html
+        intermittently with about 30% probability.
+
+        * rendering/RenderBlockLineLayout.cpp:
+        (WebCore::RenderBlock::layoutRunsAndFloatsInRange):
+
 2011-12-01  Shinya Kawanaka  <[email protected]>
 
         Asynchronous SpellChecker should consider multiple requests.

Modified: trunk/Source/WebCore/rendering/RenderBlockLineLayout.cpp (101732 => 101733)


--- trunk/Source/WebCore/rendering/RenderBlockLineLayout.cpp	2011-12-02 02:38:06 UTC (rev 101732)
+++ trunk/Source/WebCore/rendering/RenderBlockLineLayout.cpp	2011-12-02 02:39:14 UTC (rev 101733)
@@ -1208,8 +1208,10 @@
         // FIXME: Is this check necessary before the first iteration or can it be moved to the end?
         if (checkForEndLineMatch) {
             layoutState.setEndLineMatched(matchedEndLine(layoutState, resolver, cleanLineStart, cleanLineBidiStatus));
-            if (layoutState.endLineMatched())
+            if (layoutState.endLineMatched()) {
+                resolver.setPosition(InlineIterator(resolver.position().root(), 0, 0), 0);
                 break;
+            }
         }
 
         lineMidpointState.reset();
@@ -1226,6 +1228,7 @@
             resolver.runs().deleteRuns();
             resolver.markCurrentRunEmpty(); // FIXME: This can probably be replaced by an ASSERT (or just removed).
             layoutState.setCheckForFloatsFromLastLine(true);
+            resolver.setPosition(InlineIterator(resolver.position().root(), 0, 0), 0);
             break;
         }
         ASSERT(end != resolver.position());
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to