But 427779. Make the XML parser not bail out on invalid URI in <xhtml:base>. r+sr=sicking

This commit is contained in:
Boris Zbarsky 2008-10-10 13:44:43 -04:00
parent fc80f06707
commit 1326139920
2 changed files with 4 additions and 8 deletions

View file

@ -631,7 +631,7 @@ nsXMLContentSink::CloseElement(nsIContent* aContent)
} }
if (nodeInfo->Equals(nsGkAtoms::base, kNameSpaceID_XHTML) && if (nodeInfo->Equals(nsGkAtoms::base, kNameSpaceID_XHTML) &&
!mHasProcessedBase) { !mHasProcessedBase) {
// The first base wins // The first base wins
rv = ProcessBASETag(aContent); rv = ProcessBASETag(aContent);
mHasProcessedBase = PR_TRUE; mHasProcessedBase = PR_TRUE;
@ -783,13 +783,11 @@ nsXMLContentSink::ProcessStyleLink(nsIContent* aElement,
return rv; return rv;
} }
nsresult void
nsXMLContentSink::ProcessBASETag(nsIContent* aContent) nsXMLContentSink::ProcessBASETag(nsIContent* aContent)
{ {
NS_ASSERTION(aContent, "missing base-element"); NS_ASSERTION(aContent, "missing base-element");
nsresult rv = NS_OK;
if (mDocument) { if (mDocument) {
nsAutoString value; nsAutoString value;
@ -799,7 +797,7 @@ nsXMLContentSink::ProcessBASETag(nsIContent* aContent)
if (aContent->GetAttr(kNameSpaceID_None, nsGkAtoms::href, value)) { if (aContent->GetAttr(kNameSpaceID_None, nsGkAtoms::href, value)) {
nsCOMPtr<nsIURI> baseURI; nsCOMPtr<nsIURI> baseURI;
rv = NS_NewURI(getter_AddRefs(baseURI), value); nsresult rv = NS_NewURI(getter_AddRefs(baseURI), value);
if (NS_SUCCEEDED(rv)) { if (NS_SUCCEEDED(rv)) {
rv = mDocument->SetBaseURI(baseURI); // The document checks if it is legal to set this base rv = mDocument->SetBaseURI(baseURI); // The document checks if it is legal to set this base
if (NS_SUCCEEDED(rv)) { if (NS_SUCCEEDED(rv)) {
@ -808,8 +806,6 @@ nsXMLContentSink::ProcessBASETag(nsIContent* aContent)
} }
} }
} }
return rv;
} }

View file

@ -152,7 +152,7 @@ protected:
void PopContent(); void PopContent();
PRBool HaveNotifiedForCurrentContent() const; PRBool HaveNotifiedForCurrentContent() const;
nsresult ProcessBASETag(nsIContent* aContent); void ProcessBASETag(nsIContent* aContent);
nsresult FlushTags(); nsresult FlushTags();