Null-check document to fix crash, and a little other cleanup. b=258843 r+sr=bzbarsky

This commit is contained in:
dbaron%dbaron.org 2004-09-17 20:50:22 +00:00
Родитель fb39000eeb
Коммит f94ed4c91a
2 изменённых файлов: 12 добавлений и 12 удалений

Просмотреть файл

@ -114,7 +114,6 @@ nsDOMCSSAttributeDeclaration::GetCSSDeclaration(nsCSSDeclaration **aDecl,
return NS_ERROR_OUT_OF_MEMORY; return NS_ERROR_OUT_OF_MEMORY;
} }
nsCOMPtr<nsICSSStyleRule> cssRule;
result = NS_NewCSSStyleRule(getter_AddRefs(cssRule), nsnull, decl); result = NS_NewCSSStyleRule(getter_AddRefs(cssRule), nsnull, decl);
if (NS_FAILED(result)) { if (NS_FAILED(result)) {
decl->RuleAbort(); decl->RuleAbort();
@ -149,10 +148,11 @@ nsDOMCSSAttributeDeclaration::GetCSSParsingEnvironment(nsIURI** aSheetURI,
*aCSSLoader = nsnull; *aCSSLoader = nsnull;
*aCSSParser = nsnull; *aCSSParser = nsnull;
nsINodeInfo *nodeInfo = mContent->GetNodeInfo(); nsIDocument* doc = mContent->GetOwnerDoc();
if (!doc) {
// XXXbz GetOwnerDocument // document has been destroyed
nsIDocument* doc = nsContentUtils::GetDocument(nodeInfo); return NS_ERROR_NOT_AVAILABLE;
}
nsCOMPtr<nsIURI> baseURI = mContent->GetBaseURI(); nsCOMPtr<nsIURI> baseURI = mContent->GetBaseURI();
nsCOMPtr<nsIURI> sheetURI = doc->GetDocumentURI(); nsCOMPtr<nsIURI> sheetURI = doc->GetDocumentURI();
@ -177,7 +177,7 @@ nsDOMCSSAttributeDeclaration::GetCSSParsingEnvironment(nsIURI** aSheetURI,
// namespace. If we're XHTML, we need to be case-sensitive Otherwise, we // namespace. If we're XHTML, we need to be case-sensitive Otherwise, we
// should not be // should not be
(*aCSSParser)->SetCaseSensitive(!mContent->IsContentOfType(nsIContent::eHTML) || (*aCSSParser)->SetCaseSensitive(!mContent->IsContentOfType(nsIContent::eHTML) ||
nodeInfo->NamespaceEquals(kNameSpaceID_XHTML)); mContent->GetNodeInfo()->NamespaceEquals(kNameSpaceID_XHTML));
baseURI.swap(*aBaseURI); baseURI.swap(*aBaseURI);
sheetURI.swap(*aSheetURI); sheetURI.swap(*aSheetURI);

Просмотреть файл

@ -114,7 +114,6 @@ nsDOMCSSAttributeDeclaration::GetCSSDeclaration(nsCSSDeclaration **aDecl,
return NS_ERROR_OUT_OF_MEMORY; return NS_ERROR_OUT_OF_MEMORY;
} }
nsCOMPtr<nsICSSStyleRule> cssRule;
result = NS_NewCSSStyleRule(getter_AddRefs(cssRule), nsnull, decl); result = NS_NewCSSStyleRule(getter_AddRefs(cssRule), nsnull, decl);
if (NS_FAILED(result)) { if (NS_FAILED(result)) {
decl->RuleAbort(); decl->RuleAbort();
@ -149,10 +148,11 @@ nsDOMCSSAttributeDeclaration::GetCSSParsingEnvironment(nsIURI** aSheetURI,
*aCSSLoader = nsnull; *aCSSLoader = nsnull;
*aCSSParser = nsnull; *aCSSParser = nsnull;
nsINodeInfo *nodeInfo = mContent->GetNodeInfo(); nsIDocument* doc = mContent->GetOwnerDoc();
if (!doc) {
// XXXbz GetOwnerDocument // document has been destroyed
nsIDocument* doc = nsContentUtils::GetDocument(nodeInfo); return NS_ERROR_NOT_AVAILABLE;
}
nsCOMPtr<nsIURI> baseURI = mContent->GetBaseURI(); nsCOMPtr<nsIURI> baseURI = mContent->GetBaseURI();
nsCOMPtr<nsIURI> sheetURI = doc->GetDocumentURI(); nsCOMPtr<nsIURI> sheetURI = doc->GetDocumentURI();
@ -177,7 +177,7 @@ nsDOMCSSAttributeDeclaration::GetCSSParsingEnvironment(nsIURI** aSheetURI,
// namespace. If we're XHTML, we need to be case-sensitive Otherwise, we // namespace. If we're XHTML, we need to be case-sensitive Otherwise, we
// should not be // should not be
(*aCSSParser)->SetCaseSensitive(!mContent->IsContentOfType(nsIContent::eHTML) || (*aCSSParser)->SetCaseSensitive(!mContent->IsContentOfType(nsIContent::eHTML) ||
nodeInfo->NamespaceEquals(kNameSpaceID_XHTML)); mContent->GetNodeInfo()->NamespaceEquals(kNameSpaceID_XHTML));
baseURI.swap(*aBaseURI); baseURI.swap(*aBaseURI);
sheetURI.swap(*aSheetURI); sheetURI.swap(*aSheetURI);