| Index: Source/core/rendering/svg/RenderSVGResourceContainer.cpp | 
| diff --git a/Source/core/rendering/svg/RenderSVGResourceContainer.cpp b/Source/core/rendering/svg/RenderSVGResourceContainer.cpp | 
| index 575266e1a0b35db6f3f611e8d59f6d5684f86b06..78966fe064cc30adeaf3013c58b96533e566a891 100644 | 
| --- a/Source/core/rendering/svg/RenderSVGResourceContainer.cpp | 
| +++ b/Source/core/rendering/svg/RenderSVGResourceContainer.cpp | 
| @@ -23,11 +23,12 @@ | 
|  | 
| #include "core/rendering/RenderLayer.h" | 
| #include "core/rendering/RenderView.h" | 
| -#include "core/rendering/svg/RenderSVGRoot.h" | 
| #include "core/rendering/svg/SVGRenderingContext.h" | 
| #include "core/rendering/svg/SVGResourcesCache.h" | 
| #include "core/svg/SVGGraphicsElement.h" | 
|  | 
| +#include "wtf/TemporaryChange.h" | 
| + | 
| namespace WebCore { | 
|  | 
| static inline SVGDocumentExtensions* svgExtensionsFromElement(SVGElement* element) | 
| @@ -41,6 +42,7 @@ RenderSVGResourceContainer::RenderSVGResourceContainer(SVGElement* node) | 
| , m_id(node->getIdAttribute()) | 
| , m_registered(false) | 
| , m_isInvalidating(false) | 
| +    , m_isInLayout(false) | 
| { | 
| } | 
|  | 
| @@ -52,9 +54,15 @@ RenderSVGResourceContainer::~RenderSVGResourceContainer() | 
|  | 
| void RenderSVGResourceContainer::layout() | 
| { | 
| +    ASSERT(needsLayout()); | 
| +    if (m_isInLayout) | 
| +        return; | 
| + | 
| +    TemporaryChange<bool> inLayoutChange(m_isInLayout, true); | 
| + | 
| // Invalidate all resources if our layout changed. | 
| if (everHadLayout() && selfNeedsLayout()) | 
| -        RenderSVGRoot::addResourceForClientInvalidation(this); | 
| +        removeAllClientsFromCache(); | 
|  | 
| RenderSVGHiddenContainer::layout(); | 
| } | 
|  |