Backed out changeset fea9904b6dec (bug 987433) for leaks on a CLOSED TREE.

This commit is contained in:
Ryan VanderMeulen 2014-03-26 19:44:54 -04:00
parent 290aaae8d9
commit 4d6e8fe891
5 changed files with 26 additions and 4 deletions

View File

@ -520,6 +520,10 @@ FragmentOrElement::nsDOMSlots::~nsDOMSlots()
if (mAttributeMap) {
mAttributeMap->DropReference();
}
if (mClassList) {
mClassList->DropReference();
}
}
void
@ -585,7 +589,10 @@ FragmentOrElement::nsDOMSlots::Unlink(bool aIsXUL)
mChildrenList = nullptr;
mUndoManager = nullptr;
mCustomElementData = nullptr;
mClassList = nullptr;
if (mClassList) {
mClassList->DropReference();
mClassList = nullptr;
}
}
size_t

View File

@ -29,7 +29,7 @@ nsDOMTokenList::nsDOMTokenList(Element* aElement, nsIAtom* aAttrAtom)
nsDOMTokenList::~nsDOMTokenList() { }
NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_1(nsDOMTokenList, mElement)
NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_0(nsDOMTokenList)
NS_INTERFACE_MAP_BEGIN(nsDOMTokenList)
NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
@ -40,6 +40,12 @@ NS_INTERFACE_MAP_END
NS_IMPL_CYCLE_COLLECTING_ADDREF(nsDOMTokenList)
NS_IMPL_CYCLE_COLLECTING_RELEASE(nsDOMTokenList)
void
nsDOMTokenList::DropReference()
{
mElement = nullptr;
}
const nsAttrValue*
nsDOMTokenList::GetParsedAttr()
{

View File

@ -37,6 +37,8 @@ public:
nsDOMTokenList(Element* aElement, nsIAtom* aAttrAtom);
void DropReference();
virtual JSObject* WrapObject(JSContext *cx,
JS::Handle<JSObject*> scope) MOZ_OVERRIDE;
@ -78,7 +80,7 @@ protected:
const nsTArray<nsString>& aTokens);
inline const nsAttrValue* GetParsedAttr();
nsCOMPtr<Element> mElement;
Element* mElement;
nsCOMPtr<nsIAtom> mAttrAtom;
};

View File

@ -30,6 +30,9 @@ HTMLOutputElement::HTMLOutputElement(already_AddRefed<nsINodeInfo>& aNodeInfo)
HTMLOutputElement::~HTMLOutputElement()
{
if (mTokenList) {
mTokenList->DropReference();
}
}
NS_IMPL_CYCLE_COLLECTION_CLASS(HTMLOutputElement)
@ -37,7 +40,10 @@ NS_IMPL_CYCLE_COLLECTION_CLASS(HTMLOutputElement)
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(HTMLOutputElement,
nsGenericHTMLFormElement)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mValidity)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mTokenList)
if (tmp->mTokenList) {
tmp->mTokenList->DropReference();
NS_IMPL_CYCLE_COLLECTION_UNLINK(mTokenList)
}
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(HTMLOutputElement,
nsGenericHTMLFormElement)

View File

@ -3142,6 +3142,7 @@ nsDOMSettableTokenListPropertyDestructor(void *aObject, nsIAtom *aProperty,
{
nsDOMSettableTokenList* list =
static_cast<nsDOMSettableTokenList*>(aPropertyValue);
list->DropReference();
NS_RELEASE(list);
}