Index: Source/WebCore/svg/SVGUseElement.cpp |
=================================================================== |
--- Source/WebCore/svg/SVGUseElement.cpp (revision 110450) |
+++ Source/WebCore/svg/SVGUseElement.cpp (working copy) |
@@ -345,14 +345,21 @@ |
if (SVGElement* shadowRoot = m_targetElementInstance->shadowTreeElement()) |
shadowRoot->setNeedsStyleRecalc(); |
} |
+ // Do not do style calculation during shadow tree construction because it may cause nodes to |
+ // be attached before they should be. Style recalc will happen when the tree is constructed |
+ // and explicitly attached. |
+ if (m_updatesBlocked) |
+ return false; |
return true; |
} |
void SVGUseElement::didRecalcStyle(StyleChange change) |
{ |
// Assure that the shadow tree has not been marked for recreation, while we're building it. |
- if (m_updatesBlocked) |
- ASSERT(!m_needsShadowTreeRecreation); |
+ if (m_updatesBlocked && m_needsShadowTreeRecreation) { |
+ // We are about to recreate the tree while in the middle of recreating the tree. |
+ return; |
+ } |
RenderSVGShadowTreeRootContainer* shadowRoot = static_cast<RenderSVGShadowTreeRootContainer*>(renderer()); |
if (!shadowRoot) |