fix handling of uri's with 8 bit characters, a=phil r=waterson 24692

This commit is contained in:
bienvenu%netscape.com 2000-02-23 20:51:36 +00:00
Родитель 6d75704d50
Коммит 89181e6adc
5 изменённых файлов: 32 добавлений и 4 удалений

Просмотреть файл

@ -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);