diff --git a/mozilla/content/html/document/src/nsHTMLDocument.cpp b/mozilla/content/html/document/src/nsHTMLDocument.cpp index 0375ba66afb..7a80089f4dc 100644 --- a/mozilla/content/html/document/src/nsHTMLDocument.cpp +++ b/mozilla/content/html/document/src/nsHTMLDocument.cpp @@ -162,7 +162,7 @@ IsNamedItem(nsIContent* aContent, nsIAtom *aTag, nsAString& aName); // MatchElementId is defined in nsXMLDocument.cpp nsIContent * -MatchElementId(nsIContent *aContent, const nsAString& aId); +MatchElementId(nsIContent *aContent, const nsACString& aUTF8Id, const nsAString& aId); static NS_DEFINE_CID(kCParserCID, NS_PARSER_CID); @@ -2839,7 +2839,7 @@ nsHTMLDocument::GetElementById(const nsAString& aElementId, "getElementById(\"\") called, fix caller?"); if (mRootContent && !aElementId.IsEmpty()) { - e = MatchElementId(mRootContent, aElementId); + e = MatchElementId(mRootContent, NS_ConvertUCS2toUTF8(aElementId), aElementId); } if (!e) { diff --git a/mozilla/content/xml/document/src/nsXMLDocument.cpp b/mozilla/content/xml/document/src/nsXMLDocument.cpp index ab91a08f048..331801f6e97 100644 --- a/mozilla/content/xml/document/src/nsXMLDocument.cpp +++ b/mozilla/content/xml/document/src/nsXMLDocument.cpp @@ -1001,7 +1001,7 @@ nsXMLDocument::CreateElementNS(const nsAString& aNamespaceURI, // Id attribute matching function used by nsXMLDocument and // nsHTMLDocument. nsIContent * -MatchElementId(nsIContent *aContent, const nsAString& aId) +MatchElementId(nsIContent *aContent, const nsACString& aUTF8Id, const nsAString& aId) { if (aContent->IsContentOfType(nsIContent::eHTML)) { if (aContent->HasAttr(kNameSpaceID_None, nsHTMLAtoms::id)) { @@ -1019,7 +1019,7 @@ MatchElementId(nsIContent *aContent, const nsAString& aId) if (xmlContent) { nsCOMPtr value; if (NS_SUCCEEDED(xmlContent->GetID(getter_AddRefs(value))) && - value && value->Equals(aId)) { + value && value->EqualsUTF8(aUTF8Id)) { return aContent; } } @@ -1032,7 +1032,7 @@ MatchElementId(nsIContent *aContent, const nsAString& aId) nsCOMPtr child; for (i = 0; i < count && result == nsnull; i++) { aContent->ChildAt(i, getter_AddRefs(child)); - result = MatchElementId(child, aId); + result = MatchElementId(child, aUTF8Id, aId); } return result; @@ -1058,7 +1058,9 @@ nsXMLDocument::GetElementById(const nsAString& aElementId, // XXX For now, we do a brute force search of the content tree. // We should come up with a more efficient solution. // Note that content is *not* refcounted here, so do *not* release it! - nsIContent *content = MatchElementId(mRootContent, aElementId); + nsIContent *content = MatchElementId(mRootContent, + NS_ConvertUCS2toUTF8(aElementId), + aElementId); if (!content) { return NS_OK;