Title: [109427] branches/chromium/963
Revision
109427
Author
[email protected]
Date
2012-03-01 14:39:34 -0800 (Thu, 01 Mar 2012)

Log Message

Merge 109011
BUG=114144
Review URL: https://chromiumcodereview.appspot.com/9566033

Modified Paths

Added Paths

Diff

Copied: branches/chromium/963/LayoutTests/fast/css/positioned-in-relative-position-inline-crash-expected.txt (from rev 109011, trunk/LayoutTests/fast/css/positioned-in-relative-position-inline-crash-expected.txt) (0 => 109427)


--- branches/chromium/963/LayoutTests/fast/css/positioned-in-relative-position-inline-crash-expected.txt	                        (rev 0)
+++ branches/chromium/963/LayoutTests/fast/css/positioned-in-relative-position-inline-crash-expected.txt	2012-03-01 22:39:34 UTC (rev 109427)
@@ -0,0 +1,3 @@
+PASS, if no exception or crash in debug
+div1
+2

Copied: branches/chromium/963/LayoutTests/fast/css/positioned-in-relative-position-inline-crash.html (from rev 109011, trunk/LayoutTests/fast/css/positioned-in-relative-position-inline-crash.html) (0 => 109427)


--- branches/chromium/963/LayoutTests/fast/css/positioned-in-relative-position-inline-crash.html	                        (rev 0)
+++ branches/chromium/963/LayoutTests/fast/css/positioned-in-relative-position-inline-crash.html	2012-03-01 22:39:34 UTC (rev 109427)
@@ -0,0 +1,37 @@
+<html>
+<style type="text/css">
+.inlineContainer {
+  position: relative;
+  display: inline;
+}
+#positioned {
+  position: absolute;
+  top: 100px;
+}
+</style>
+<script type="text/_javascript_">
+if (window.layoutTestController) {
+    layoutTestController.waitUntilDone();
+    layoutTestController.dumpAsText();
+}
+
+function dumpTest() {
+    if (window.layoutTestController) {
+        layoutTestController.notifyDone();
+    }
+}
+function runTest() {
+    document.getElementById('positioned').innerHTML = '2';
+    document.getElementById('positioned').style.color = 'red';
+    setTimeout('dumpTest()', 10);
+}
+setTimeout('runTest()', 0);
+</script>
+<body>
+PASS, if no exception or crash in debug
+  <div class='inlineContainer'>
+    <div>div1</div>
+    <div id='positioned'>div2</div>
+  </div>
+</body>
+</html>

Modified: branches/chromium/963/Source/WebCore/rendering/RenderObject.cpp (109426 => 109427)


--- branches/chromium/963/Source/WebCore/rendering/RenderObject.cpp	2012-03-01 22:30:47 UTC (rev 109426)
+++ branches/chromium/963/Source/WebCore/rendering/RenderObject.cpp	2012-03-01 22:39:34 UTC (rev 109427)
@@ -650,8 +650,9 @@
         if (!container && !object->isRenderView())
             return;
         if (!last->isText() && (last->style()->position() == FixedPosition || last->style()->position() == AbsolutePosition)) {
-            bool willSkipRelativelyPositionedInlines = !object->isRenderBlock();
-            while (object && !object->isRenderBlock()) // Skip relatively positioned inlines and get to the enclosing RenderBlock.
+            bool willSkipRelativelyPositionedInlines = !object->isRenderBlock() || object->isAnonymousBlock();
+            // Skip relatively positioned inlines and anonymous blocks to get to the enclosing RenderBlock.
+            while (object && (!object->isRenderBlock() || object->isAnonymousBlock()))
                 object = object->container();
             if (!object || object->m_posChildNeedsLayout)
                 return;
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to