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:
parent
8cd63ef86b
commit
f56464de41
@ -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);
|
||||
|
||||
@ -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);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user