mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-12 14:20:14 +02:00
But 427779. Make the XML parser not bail out on invalid URI in <xhtml:base>. r+sr=sicking
This commit is contained in:
parent
fc80f06707
commit
1326139920
2 changed files with 4 additions and 8 deletions
|
|
@ -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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue