Bug 1380106 - Drop style data in DestroyContent. r=heycam,r=bz
MozReview-Commit-ID: 9ydkvlDA9oS
--- a/dom/base/FragmentOrElement.cpp
+++ b/dom/base/FragmentOrElement.cpp
@@ -1257,16 +1257,23 @@ FragmentOrElement::SetTextContentInterna
ErrorResult& aError)
{
aError = nsContentUtils::SetNodeTextContent(this, aTextContent, false);
}
void
FragmentOrElement::DestroyContent()
{
+ // Drop any servo data. We do this before the RemovedFromDocument call below
+ // so that it doesn't need to try to keep the style state sane when shuffling
+ // around the flattened tree.
+ if (IsElement() && AsElement()->HasServoData()) {
+ AsElement()->ClearServoData();
+ }
+
nsIDocument *document = OwnerDoc();
document->BindingManager()->RemovedFromDocument(this, document,
nsBindingManager::eRunDtor);
document->ClearBoxObjectFor(this);
uint32_t i, count = mAttrsAndChildren.ChildCount();
for (i = 0; i < count; ++i) {
// The child can remove itself from the parent in BindToTree.