diff options
Diffstat (limited to 'WebCore/rendering/RenderWidget.cpp')
-rw-r--r-- | WebCore/rendering/RenderWidget.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/WebCore/rendering/RenderWidget.cpp b/WebCore/rendering/RenderWidget.cpp index 763371f..e5ccd05 100644 --- a/WebCore/rendering/RenderWidget.cpp +++ b/WebCore/rendering/RenderWidget.cpp @@ -300,7 +300,7 @@ void RenderWidget::paint(PaintInfo& paintInfo, int tx, int ty) if (m_widget->isFrameView()) { FrameView* frameView = static_cast<FrameView*>(m_widget.get()); - bool runOverlapTests = !frameView->useSlowRepaintsIfNotOverlapped() || frameView->hasCompositedContent(); + bool runOverlapTests = !frameView->useSlowRepaintsIfNotOverlapped() || frameView->hasCompositedContentIncludingDescendants(); if (paintInfo.overlapTestRequests && runOverlapTests) { ASSERT(!paintInfo.overlapTestRequests->contains(this)); paintInfo.overlapTestRequests->set(this, m_widget->frameRect()); @@ -350,7 +350,8 @@ void RenderWidget::updateWidgetPosition() // content size is wrong) we have to do a layout to set the right widget size if (m_widget && m_widget->isFrameView()) { FrameView* frameView = static_cast<FrameView*>(m_widget.get()); - if (boundsChanged || frameView->needsLayout()) + // Check the frame's page to make sure that the frame isn't in the process of being destroyed. + if ((boundsChanged || frameView->needsLayout()) && frameView->frame()->page()) frameView->layout(); } #endif |