Index: Source/core/layout/shapes/ShapeOutsideInfo.cpp |
diff --git a/Source/core/layout/shapes/ShapeOutsideInfo.cpp b/Source/core/layout/shapes/ShapeOutsideInfo.cpp |
index 8e2f81d369b722b9b5020478835df591fe79ed71..eea6568ab106225e2a466d08aa62dfbf693359a7 100644 |
--- a/Source/core/layout/shapes/ShapeOutsideInfo.cpp |
+++ b/Source/core/layout/shapes/ShapeOutsideInfo.cpp |
@@ -76,6 +76,8 @@ void ShapeOutsideInfo::setReferenceBoxLogicalSize(LayoutSize newReferenceBoxLogi |
break; |
} |
+ newReferenceBoxLogicalSize.clampNegativeToZero(); |
+ |
if (m_referenceBoxLogicalSize == newReferenceBoxLogicalSize) |
return; |
markShapeAsDirty(); |
@@ -287,7 +289,7 @@ ShapeOutsideDeltas ShapeOutsideInfo::computeDeltasForContainingBlockLine(const L |
if (isShapeDirty() || !m_shapeOutsideDeltas.isForLine(borderBoxLineTop, lineHeight)) { |
LayoutUnit referenceBoxLineTop = borderBoxLineTop - logicalTopOffset(); |
- LayoutUnit floatMarginBoxWidth = containingBlock.logicalWidthForFloat(&floatingObject); |
+ LayoutUnit floatMarginBoxWidth = std::max(containingBlock.logicalWidthForFloat(&floatingObject), LayoutUnit()); |
if (computedShape().lineOverlapsShapeMarginBounds(referenceBoxLineTop, lineHeight)) { |
LineSegment segment = computedShape().getExcludedInterval((borderBoxLineTop - logicalTopOffset()), std::min(lineHeight, shapeLogicalBottom() - borderBoxLineTop)); |