Index: third_party/WebKit/Source/core/layout/FloatingObjects.cpp |
diff --git a/third_party/WebKit/Source/core/layout/FloatingObjects.cpp b/third_party/WebKit/Source/core/layout/FloatingObjects.cpp |
index 2dcf0d9e167aa0b28a6fd1f5f92c5f644361d5d8..3972c9d69f9998cf7847d98fbe07c521be9995a0 100644 |
--- a/third_party/WebKit/Source/core/layout/FloatingObjects.cpp |
+++ b/third_party/WebKit/Source/core/layout/FloatingObjects.cpp |
@@ -64,7 +64,7 @@ FloatingObject::FloatingObject(LayoutBox* layoutObject) |
m_type = FloatRight; |
} |
-FloatingObject::FloatingObject(LayoutBox* layoutObject, Type type, const LayoutRect& frameRect, bool shouldPaint, bool isDescendant, bool isLowestNonOverhangingFloatInChild, bool performingUnsafeClone) |
+FloatingObject::FloatingObject(LayoutBox* layoutObject, Type type, const LayoutRect& frameRect, bool shouldPaint, bool isDescendant, bool isLowestNonOverhangingFloatInChild) |
: m_layoutObject(layoutObject) |
, m_originatingLine(nullptr) |
, m_frameRect(frameRect) |
@@ -76,15 +76,7 @@ FloatingObject::FloatingObject(LayoutBox* layoutObject, Type type, const LayoutR |
, m_isInPlacedTree(false) |
#endif |
{ |
- m_shouldPaint = shouldPaint; |
- // TODO(chrishtr): Avoid the following hack when performing an unsafe clone. |
- // This avoids a use-after-free bug due to the fact that we sometimes fail to remove |
- // floats from their container when detaching (crbug.com/619380). This is actually a bug in the |
- // floats detach machinery, which needs to be fixed, in which case this workaround can be removed. |
- // In any case, it should be safe because moving floats from one owner to another should cause layout, |
- // which will in turn update the m_shouldPaint property. |
- if (!performingUnsafeClone) |
- m_shouldPaint = m_shouldPaint || shouldPaintForCompositedLayoutPart(); |
+ m_shouldPaint = shouldPaint || shouldPaintForCompositedLayoutPart(); |
} |
bool FloatingObject::shouldPaintForCompositedLayoutPart() |
@@ -121,7 +113,7 @@ std::unique_ptr<FloatingObject> FloatingObject::copyToNewContainer(LayoutSize of |
std::unique_ptr<FloatingObject> FloatingObject::unsafeClone() const |
{ |
- std::unique_ptr<FloatingObject> cloneObject = wrapUnique(new FloatingObject(layoutObject(), getType(), m_frameRect, m_shouldPaint, m_isDescendant, false, true)); |
+ std::unique_ptr<FloatingObject> cloneObject = wrapUnique(new FloatingObject(layoutObject(), getType(), m_frameRect, m_shouldPaint, m_isDescendant, false)); |
cloneObject->m_isPlaced = m_isPlaced; |
return cloneObject; |
} |