зеркало из https://github.com/mozilla/gecko-dev.git
fix handling of uri's with 8 bit characters, a=phil r=waterson 24692
This commit is contained in:
Родитель
6d75704d50
Коммит
89181e6adc
|
@ -522,10 +522,11 @@ nsXULContentUtils::GetElementRefResource(nsIContent* aElement, nsIRDFResource**
|
|||
if (! url)
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
|
||||
rv = rdf_MakeAbsoluteURI(url, uri);
|
||||
nsCAutoString uriStr(uri);
|
||||
rv = rdf_MakeAbsoluteURI(url, uriStr);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
rv = gRDF->GetUnicodeResource(uri.GetUnicode(), aResult);
|
||||
rv = gRDF->GetResource(uriStr.GetBuffer(), aResult);
|
||||
}
|
||||
else {
|
||||
rv = GetElementResource(aElement, aResult);
|
||||
|
|
|
@ -133,3 +133,23 @@ rdf_MakeAbsoluteURI(nsIURI* aURL, nsString& aURI)
|
|||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult
|
||||
rdf_MakeAbsoluteURI(nsIURI* aURL, nsCString& aURI)
|
||||
{
|
||||
nsresult rv;
|
||||
nsXPIDLCString result;
|
||||
|
||||
rv = NS_MakeAbsoluteURI(aURI.GetBuffer(), aURL, getter_Copies(result));
|
||||
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
aURI = result;
|
||||
}
|
||||
else {
|
||||
// There are some ugly URIs (e.g., "NC:Foo") that netlib can't
|
||||
// parse. If NS_MakeAbsoluteURL fails, then just punt and
|
||||
// assume that aURI was already absolute.
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
|
|
@ -57,6 +57,9 @@ rdf_MakeAbsoluteURI(const nsString& aBaseURI, nsString& aURI);
|
|||
nsresult
|
||||
rdf_MakeAbsoluteURI(nsIURI* aBaseURL, nsString& aURI);
|
||||
|
||||
nsresult
|
||||
rdf_MakeAbsoluteURI(nsIURI* aBaseURL, nsCString& aURI);
|
||||
|
||||
#endif // rdfutil_h__
|
||||
|
||||
|
||||
|
|
|
@ -30,6 +30,7 @@ void XXXNeverCalled()
|
|||
{
|
||||
nsAutoString s;
|
||||
nsCAutoString cs;
|
||||
nsCString cStr;
|
||||
int v;
|
||||
|
||||
// nsRDFParserUtils
|
||||
|
@ -42,6 +43,8 @@ void XXXNeverCalled()
|
|||
rdf_MakeRelativeRef(s, s);
|
||||
rdf_MakeRelativeName(s, s);
|
||||
rdf_MakeAbsoluteURI(s, s);
|
||||
rdf_MakeAbsoluteURI(s, cStr);
|
||||
|
||||
NS_NewContainerEnumerator(nsnull, nsnull, nsnull);
|
||||
NS_NewEmptyEnumerator(nsnull);
|
||||
|
||||
|
|
|
@ -522,10 +522,11 @@ nsXULContentUtils::GetElementRefResource(nsIContent* aElement, nsIRDFResource**
|
|||
if (! url)
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
|
||||
rv = rdf_MakeAbsoluteURI(url, uri);
|
||||
nsCAutoString uriStr(uri);
|
||||
rv = rdf_MakeAbsoluteURI(url, uriStr);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
rv = gRDF->GetUnicodeResource(uri.GetUnicode(), aResult);
|
||||
rv = gRDF->GetResource(uriStr.GetBuffer(), aResult);
|
||||
}
|
||||
else {
|
||||
rv = GetElementResource(aElement, aResult);
|
||||
|
|
Загрузка…
Ссылка в новой задаче