Chromium Code Reviews| Index: third_party/WebKit/Source/core/layout/LayoutObject.cpp |
| diff --git a/third_party/WebKit/Source/core/layout/LayoutObject.cpp b/third_party/WebKit/Source/core/layout/LayoutObject.cpp |
| index 0204a2614af5b3f66a06967dbaf95bdadfb5616a..3e228163af5bbd450bf04117bc34a1c6ab45f74c 100644 |
| --- a/third_party/WebKit/Source/core/layout/LayoutObject.cpp |
| +++ b/third_party/WebKit/Source/core/layout/LayoutObject.cpp |
| @@ -752,10 +752,12 @@ void LayoutObject::markContainerChainForLayout(bool scheduleRelayout, SubtreeLay |
| { |
| ASSERT(!isSetNeedsLayoutForbidden()); |
| ASSERT(!layouter || this != layouter->root()); |
| - // When we have a layouter, it means that we're in layout and we're marking |
| - // a descendant as needing layout with the intention of visiting it during |
| - // this layout. We shouldn't be scheduling it to be laid out later. |
| - ASSERT(!scheduleRelayout || !layouter); |
| + // When we're in layout, we're marking a descendant as needing layout with |
| + // the intention of visiting it during this layout. We shouldn't be |
| + // scheduling it to be laid out later. |
| + // Also, schedduleRelayout() must not be called while iterating |
|
cbiesinger
2016/04/26 02:04:30
scheddule -> schedule
|
| + // FrameView::m_layoutSubtreeRootList. |
| + scheduleRelayout &= !frameView()->isInPerformLayout(); |
| LayoutObject* object = container(); |
| LayoutObject* last = this; |