diff --git a/content/base/src/nsContentUtils.cpp b/content/base/src/nsContentUtils.cpp index ce55e286c1c..8f71e5d2612 100644 --- a/content/base/src/nsContentUtils.cpp +++ b/content/base/src/nsContentUtils.cpp @@ -1538,11 +1538,8 @@ nsContentUtils::NewURIWithDocumentCharset(nsIURI** aResult, nsIDocument* aDocument, nsIURI* aBaseURI) { - nsCAutoString originCharset; - if (aDocument) - originCharset = aDocument->GetDocumentCharacterSet(); - - return NS_NewURI(aResult, NS_ConvertUCS2toUTF8(aSpec), originCharset.get(), + return NS_NewURI(aResult, aSpec, + aDocument ? aDocument->GetDocumentCharacterSet().get() : nsnull, aBaseURI, sIOService); } diff --git a/content/html/content/src/nsGenericHTMLElement.cpp b/content/html/content/src/nsGenericHTMLElement.cpp index 0db0201a5f1..dc60afeb258 100644 --- a/content/html/content/src/nsGenericHTMLElement.cpp +++ b/content/html/content/src/nsGenericHTMLElement.cpp @@ -1583,16 +1583,16 @@ nsGenericHTMLElement::GetHrefURIForAnchors(nsIURI** aURI) // nsHTMLStyleElement. // Get href= attribute (relative URI). - nsAutoString relURISpec; - if (NS_CONTENT_ATTR_HAS_VALUE == - GetAttr(kNameSpaceID_None, nsHTMLAtoms::href, relURISpec)) { + // We use the nsAttrValue's copy of the URI string to avoid copying. + const nsAttrValue* attr = mAttrsAndChildren.GetAttr(nsHTMLAtoms::href); + if (attr) { // Get base URI. nsCOMPtr baseURI = GetBaseURI(); // Get absolute URI. nsresult rv = nsContentUtils::NewURIWithDocumentCharset(aURI, - relURISpec, + attr->GetStringValue(), GetOwnerDoc(), baseURI); if (NS_FAILED(rv)) {