Fixing orange (hopefully). Don't dereference a pointer in the same call where it's passed as getter_AddRefs, because that will null it out first. For now, I'm keeping a strong reference to the node info manager at these call sites since it's not clear to me that it's guaranteed to stay around after the NodeInfo is released.

git-svn-id: svn://10.0.0.236/trunk@149345 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
bryner%brianryner.com 2003-11-15 08:16:23 +00:00
parent 8cd63ef86b
commit f56464de41
2 changed files with 11 additions and 9 deletions

View File

@ -238,8 +238,8 @@ nsDOMAttributeMap::Item(PRUint32 aIndex, nsIDOMNode** aReturn)
nsCOMPtr<nsINodeInfo> ni(mContent->GetNodeInfo());
NS_ENSURE_TRUE(ni, NS_ERROR_FAILURE);
ni->NodeInfoManager()->GetNodeInfo(nameAtom, prefix, nameSpaceID,
getter_AddRefs(ni));
nsCOMPtr<nsINodeInfoManager> nimgr = ni->NodeInfoManager();
nimgr->GetNodeInfo(nameAtom, prefix, nameSpaceID, getter_AddRefs(ni));
NS_ENSURE_TRUE(ni, NS_ERROR_FAILURE);
nsDOMAttribute* domAttribute = new nsDOMAttribute(mContent, ni, value);
@ -300,8 +300,8 @@ nsDOMAttributeMap::GetNamedItemNS(const nsAString& aNamespaceURI,
getter_AddRefs(prefix), value);
if (NS_CONTENT_ATTR_NOT_THERE != attrResult && NS_SUCCEEDED(attrResult)) {
ni->NodeInfoManager()->GetNodeInfo(nameAtom, prefix,
nameSpaceID, getter_AddRefs(ni));
nsCOMPtr<nsINodeInfoManager> nimgr = ni->NodeInfoManager();
nimgr->GetNodeInfo(nameAtom, prefix, nameSpaceID, getter_AddRefs(ni));
NS_ENSURE_TRUE(ni, NS_ERROR_FAILURE);
nsDOMAttribute* domAttribute = new nsDOMAttribute(mContent, ni, value);
@ -352,7 +352,8 @@ nsDOMAttributeMap::SetNamedItemNS(nsIDOMNode* aArg, nsIDOMNode** aReturn)
nsCOMPtr<nsINodeInfo> ni(mContent->GetNodeInfo());
NS_ENSURE_TRUE(ni, NS_ERROR_FAILURE);
ni->NodeInfoManager()->GetNodeInfo(name, nsURI, getter_AddRefs(ni));
nsCOMPtr<nsINodeInfoManager> nimgr = ni->NodeInfoManager();
nimgr->GetNodeInfo(name, nsURI, getter_AddRefs(ni));
NS_ENSURE_TRUE(ni, NS_ERROR_FAILURE);
nsresult attrResult = mContent->GetAttr(ni->NamespaceID(),
@ -416,8 +417,8 @@ nsDOMAttributeMap::RemoveNamedItemNS(const nsAString& aNamespaceURI,
getter_AddRefs(prefix), value);
if (NS_CONTENT_ATTR_NOT_THERE != attrResult && NS_SUCCEEDED(attrResult)) {
ni->NodeInfoManager()->GetNodeInfo(nameAtom, prefix, nameSpaceID,
getter_AddRefs(ni));
nsCOMPtr<nsINodeInfoManager> nimgr = ni->NodeInfoManager();
nimgr->GetNodeInfo(nameAtom, prefix, nameSpaceID, getter_AddRefs(ni));
NS_ENSURE_TRUE(ni, NS_ERROR_FAILURE);
nsDOMAttribute* domAttribute = new nsDOMAttribute(nsnull, ni, value);

View File

@ -3833,8 +3833,9 @@ nsXULDocument::OverlayForwardReference::Merge(nsIContent* aTargetNode,
nsCOMPtr<nsINodeInfo> ni = aTargetNode->GetNodeInfo();
if (ni) {
ni->NodeInfoManager()->GetNodeInfo(attr, prefix, nameSpaceID,
getter_AddRefs(ni));
nsCOMPtr<nsINodeInfoManager> manager = ni->NodeInfoManager();
manager->GetNodeInfo(attr, prefix, nameSpaceID,
getter_AddRefs(ni));
}
rv = aTargetNode->SetAttr(ni, value, PR_FALSE);