Fix orange by properly refcounting

This commit is contained in:
cvshook%sicking.cc 2006-11-11 01:43:11 +00:00
parent e93045c482
commit 150f388d26
5 changed files with 6 additions and 0 deletions

View File

@ -56,6 +56,8 @@ class nsIPrincipal;
class nsVoidArray;
class nsIMutationObserver;
class nsChildContentList;
class nsNodeWeakReference;
class nsNodeSupportsWeakRefTearoff;
// This bit will be set if the node doesn't have nsSlots
#define NODE_DOESNT_HAVE_SLOTS 0x00000001U

View File

@ -266,6 +266,7 @@ nsDOMAttribute::GetChildNodes(nsIDOMNodeList** aChildNodes)
if (!slots->mChildNodes) {
slots->mChildNodes = new nsChildContentList(this);
NS_ENSURE_TRUE(slots->mChildNodes, NS_ERROR_OUT_OF_MEMORY);
NS_ADDREF(slots->mChildNodes);
}
NS_ADDREF(*aChildNodes = slots->mChildNodes);

View File

@ -3403,6 +3403,7 @@ nsDocument::GetChildNodes(nsIDOMNodeList** aChildNodes)
if (!slots->mChildNodes) {
slots->mChildNodes = new nsChildContentList(this);
NS_ENSURE_TRUE(slots->mChildNodes, NS_ERROR_OUT_OF_MEMORY);
NS_ADDREF(slots->mChildNodes);
}
NS_ADDREF(*aChildNodes = slots->mChildNodes);

View File

@ -164,6 +164,7 @@ nsGenericDOMDataNode::GetChildNodes(nsIDOMNodeList** aChildNodes)
if (!slots->mChildNodes) {
slots->mChildNodes = new nsChildContentList(this);
NS_ENSURE_TRUE(slots->mChildNodes, NS_ERROR_OUT_OF_MEMORY);
NS_ADDREF(slots->mChildNodes);
}
NS_ADDREF(*aChildNodes = slots->mChildNodes);

View File

@ -1296,6 +1296,7 @@ nsGenericElement::GetChildNodes(nsIDOMNodeList** aChildNodes)
if (!slots->mChildNodes) {
return NS_ERROR_OUT_OF_MEMORY;
}
NS_ADDREF(slots->mChildNodes);
}
NS_ADDREF(*aChildNodes = slots->mChildNodes);