Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(27)

Unified Diff: Source/core/rendering/RenderLayerRepainter.cpp

Issue 270903002: Add defensive code for now to RenderLayerRepainter to prevent squashing crashes (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/rendering/RenderLayerRepainter.cpp
diff --git a/Source/core/rendering/RenderLayerRepainter.cpp b/Source/core/rendering/RenderLayerRepainter.cpp
index ad8c16b306c2926dc3ef3ecb53adda788dc144cc..b29c395781968d0dbb637dd7b49b1b14df192ea7 100644
--- a/Source/core/rendering/RenderLayerRepainter.cpp
+++ b/Source/core/rendering/RenderLayerRepainter.cpp
@@ -203,7 +203,18 @@ 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* layer = m_renderer.layer()) {
abarth-chromium 2014/05/08 16:59:34 I don't think it's worth null checking m_renderer.
chrishtr 2014/05/08 17:02:24 Done.
+ if (RenderLayer* ancestor = 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698