Index: Source/core/layout/LayoutBlockFlowLine.cpp |
diff --git a/Source/core/layout/LayoutBlockFlowLine.cpp b/Source/core/layout/LayoutBlockFlowLine.cpp |
index 77c6656f3981fdf33291fa5d194d91a5ee82645a..40e41a5b7c3a5639d4fc034b39d143270df21da3 100644 |
--- a/Source/core/layout/LayoutBlockFlowLine.cpp |
+++ b/Source/core/layout/LayoutBlockFlowLine.cpp |
@@ -900,6 +900,10 @@ void LayoutBlockFlow::layoutRunsAndFloatsInRange(LineLayoutState& layoutState, |
} |
for (; it != end; ++it) { |
FloatingObject& floatingObject = *it->get(); |
+ // If we've reached the start of clean lines any remaining floating children belong to them. |
+ // We don't care about the 'last float' mechanism once we're in clean lines so it's ok to let it get set below. |
+ if (floatingObject.layoutObject() == cleanLineStart.object()) |
+ break; |
appendFloatingObjectToLastLine(floatingObject); |
ASSERT(floatingObject.layoutObject() == layoutState.floats()[layoutState.floatIndex()].object); |
// If a float's geometry has changed, give up on syncing with clean lines. |