Index: Source/core/rendering/RenderLayerRepainter.cpp |
diff --git a/Source/core/rendering/RenderLayerRepainter.cpp b/Source/core/rendering/RenderLayerRepainter.cpp |
index ad8c16b306c2926dc3ef3ecb53adda788dc144cc..eb95f88d63e044677c4517155ee9bba2d1ba84bf 100644 |
--- a/Source/core/rendering/RenderLayerRepainter.cpp |
+++ b/Source/core/rendering/RenderLayerRepainter.cpp |
@@ -203,7 +203,16 @@ void RenderLayerRepainter::setBackingNeedsRepaintInRect(const LayoutRect& r) |
if (m_renderer.compositingState() == PaintsIntoGroupedBacking) { |
LayoutRect updatedRect(r); |
- RenderLayerModelObject* transformedAncestor = m_renderer.layer()->enclosingTransformedAncestor()->renderer(); |
+ ASSERT(m_renderer.layer()); |
+ ASSERT(m_renderer.layer()->enclosingTransformedAncestor()); |
+ ASSERT(m_renderer.layer()->enclosingTransformedAncestor()->renderer()); |
+ |
+ // FIXME: this defensive code should not have to exist. None of these pointers should ever be 0. See crbug.com/370410. |
+ RenderLayerModelObject* transformedAncestor = 0; |
+ if (RenderLayer* ancestor = m_renderer.layer()->enclosingTransformedAncestor()) |
+ transformedAncestor = ancestor->renderer(); |
+ if (!transformedAncestor) |
+ return; |
// If the transformedAncestor is actually the RenderView, we might get |
// confused and think that we can use LayoutState. Ideally, we'd made |