Bug 682827 - Crash [@ nsINode::GetOwnerDoc], r=tbsaunde

This commit is contained in:
Alexander Surkov 2011-09-01 16:12:40 +09:00
parent ced706f7fb
commit 836f78cf04

View File

@ -643,6 +643,9 @@ nsAccessibilityService::GetAccessibleFor(nsIDOMNode *aNode,
return NS_OK;
nsCOMPtr<nsINode> node(do_QueryInterface(aNode));
if (!node)
return NS_ERROR_INVALID_ARG;
NS_IF_ADDREF(*aAccessible = GetAccessible(node));
return NS_OK;
}
@ -812,6 +815,13 @@ nsAccessibilityService::GetAccessibleFromCache(nsIDOMNode* aNode,
nsIAccessible** aAccessible)
{
NS_ENSURE_ARG_POINTER(aAccessible);
*aAccessible = nsnull;
if (!aNode)
return NS_OK;
nsCOMPtr<nsINode> node(do_QueryInterface(aNode));
if (!node)
return NS_ERROR_INVALID_ARG;
// Search for an accessible in each of our per document accessible object
// caches. If we don't find it, and the given node is itself a document, check
@ -819,7 +829,6 @@ nsAccessibilityService::GetAccessibleFromCache(nsIDOMNode* aNode,
// document accessibles are not stored in the document cache, however an
// "unofficially" shutdown document (i.e. not from nsAccDocManager) can still
// exist in the document cache.
nsCOMPtr<nsINode> node(do_QueryInterface(aNode));
nsAccessible* accessible = FindAccessibleInCache(node);
if (!accessible) {
nsCOMPtr<nsIDocument> document(do_QueryInterface(node));