diff --git a/content/html/content/src/nsHTMLImageElement.cpp b/content/html/content/src/nsHTMLImageElement.cpp index d96f7301f471..c97bcbf3f47e 100644 --- a/content/html/content/src/nsHTMLImageElement.cpp +++ b/content/html/content/src/nsHTMLImageElement.cpp @@ -41,6 +41,7 @@ #include "nsIIOService.h" #include "nsIURL.h" #include "nsIServiceManager.h" +#include "nsNeckoUtil.h" static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); #endif // NECKO @@ -539,21 +540,7 @@ nsHTMLImageElement::SetSrc(const nsString& aSrc) #ifndef NECKO result = NS_MakeAbsoluteURL(baseURL, empty, aSrc, url); #else - NS_WITH_SERVICE(nsIIOService, service, kIOServiceCID, &result); - if (NS_FAILED(result)) return result; - - nsIURI *baseUri = nsnull; - result = baseURL->QueryInterface(nsIURI::GetIID(), (void**)&baseUri); - if (NS_FAILED(result)) return result; - - char *absUrlStr = nsnull; - char *urlSpec = aSrc.ToNewCString(); - if (!urlSpec) return NS_ERROR_OUT_OF_MEMORY; - result = service->MakeAbsolute(urlSpec, baseUri, &absUrlStr); - NS_RELEASE(baseUri); - url = absUrlStr; - nsCRT::free(urlSpec); - delete [] absUrlStr; + result = NS_MakeAbsoluteURI(aSrc, baseURL, url); #endif // NECKO if (NS_FAILED(result)) { url = aSrc; diff --git a/content/html/style/src/nsCSSParser.cpp b/content/html/style/src/nsCSSParser.cpp index 3aba530e73e8..09380546cb26 100644 --- a/content/html/style/src/nsCSSParser.cpp +++ b/content/html/style/src/nsCSSParser.cpp @@ -2492,7 +2492,7 @@ PRBool CSSParserImpl::ParseURL(PRInt32& aErrorCode, nsCSSValue& aValue) rv = NS_MakeAbsoluteURI(str, base, absURL); NS_RELEASE(base); - nsCRT::free(str); + delete [] str; #else rv = NS_MakeAbsoluteURL(mURL, baseURL, tk->mIdent, absURL); #endif // NECKO diff --git a/content/html/style/src/nsCSSStyleSheet.cpp b/content/html/style/src/nsCSSStyleSheet.cpp index a63338ec6e70..9fcbbe0c9f94 100644 --- a/content/html/style/src/nsCSSStyleSheet.cpp +++ b/content/html/style/src/nsCSSStyleSheet.cpp @@ -25,6 +25,7 @@ #include "nsIIOService.h" #include "nsIURL.h" #include "nsIServiceManager.h" +#include "nsNeckoUtil.h" static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); #endif // NECKO #include "nsISupportsArray.h" @@ -1476,24 +1477,12 @@ static PRBool SelectorMatches(nsIPresContext* aPresContext, NS_MakeAbsoluteURL(docURL, base, href, absURLSpec); #else nsresult rv; - NS_WITH_SERVICE(nsIIOService, service, kIOServiceCID, &rv); - if (NS_FAILED(rv)) return PR_FALSE; - nsIURI *baseUri = nsnull; rv = docURL->QueryInterface(nsIURI::GetIID(), (void**)&baseUri); if (NS_FAILED(rv)) return PR_FALSE; - char *absUrlStr = nsnull; - char *urlSpec = href.ToNewCString(); - if (!urlSpec) { - NS_RELEASE(baseUri); - return PR_FALSE; - } - rv = service->MakeAbsolute(urlSpec, baseUri, &absUrlStr); - nsCRT::free(urlSpec); + NS_MakeAbsoluteURI(href, baseUri, absURLSpec); NS_RELEASE(baseUri); - absURLSpec = absUrlStr; - delete [] absUrlStr; #endif // NECKO NS_IF_RELEASE(docURL); diff --git a/content/html/style/src/nsHTMLStyleSheet.cpp b/content/html/style/src/nsHTMLStyleSheet.cpp index bbe41af65dda..f9ebbd81dc5f 100644 --- a/content/html/style/src/nsHTMLStyleSheet.cpp +++ b/content/html/style/src/nsHTMLStyleSheet.cpp @@ -25,6 +25,7 @@ #include "nsIIOService.h" #include "nsIURL.h" #include "nsIServiceManager.h" +#include "nsNeckoUtil.h" static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); #endif // NECKO #include "nsISupportsArray.h" @@ -630,24 +631,13 @@ PRInt32 HTMLStyleSheetImpl::RulesMatching(nsIPresContext* aPresContext, #ifndef NECKO rv = NS_MakeAbsoluteURL(docURL, base, href, absURLSpec); #else - NS_WITH_SERVICE(nsIIOService, service, kIOServiceCID, &rv); - if (NS_FAILED(rv)) return 0; - nsIURI *baseUri = nsnull; rv = docURL->QueryInterface(nsIURI::GetIID(), (void**)&baseUri); if (NS_FAILED(rv)) return 0; - char *absUrlStr = nsnull; - char *urlSpec = href.ToNewCString(); - if (!urlSpec) { - NS_RELEASE(baseUri); - return 0; - } - rv = service->MakeAbsolute(urlSpec, baseUri, &absUrlStr); + rv = NS_MakeAbsoluteURI(href, baseUri, absURLSpec); + NS_RELEASE(baseUri); - nsCRT::free(urlSpec); - absURLSpec = absUrlStr; - delete [] absUrlStr; #endif // NECKO NS_IF_RELEASE(docURL); diff --git a/dom/src/base/nsGlobalWindow.cpp b/dom/src/base/nsGlobalWindow.cpp index 6042e4c68488..2a55b4fceb37 100644 --- a/dom/src/base/nsGlobalWindow.cpp +++ b/dom/src/base/nsGlobalWindow.cpp @@ -70,6 +70,7 @@ #else #include "nsIIOService.h" #include "nsIURL.h" +#include "nsNeckoUtil.h" static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); #endif // NECKO @@ -1910,22 +1911,13 @@ GlobalWindowImpl::OpenInternal(JSContext *cx, } #else nsresult rv; - NS_WITH_SERVICE(nsIIOService, service, kIOServiceCID, &rv); - if (NS_FAILED(rv)) return rv; - nsIURI *baseUri = nsnull; rv = mDocURL->QueryInterface(nsIURI::GetIID(), (void**)&baseUri); if (NS_FAILED(rv)) return rv; - char *absUrl = nsnull; - char *urlSpec = mURL.ToNewCString(); - if (!urlSpec) return NS_ERROR_OUT_OF_MEMORY; - rv = service->MakeAbsolute(urlSpec, baseUri, &absUrl); + rv = NS_MakeAbsoluteURI(mURL, baseUri, mAbsURL); NS_RELEASE(baseUri); - nsCRT::free(urlSpec); if (NS_FAILED(rv)) return rv; - mAbsURL = absUrl; - delete [] absUrl; #endif // NECKO } diff --git a/layout/generic/nsImageFrame.cpp b/layout/generic/nsImageFrame.cpp index ebc2ce53f7cf..0e7385243e67 100644 --- a/layout/generic/nsImageFrame.cpp +++ b/layout/generic/nsImageFrame.cpp @@ -39,6 +39,7 @@ #include "nsIIOService.h" #include "nsIURL.h" #include "nsIServiceManager.h" +#include "nsNeckoUtil.h" static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); #endif // NECKO #include "nsIView.h" @@ -725,23 +726,7 @@ nsImageFrame::HandleEvent(nsIPresContext& aPresContext, nsString empty; NS_MakeAbsoluteURL(baseURL, empty, src, absURL); #else - // XXX Should be a component local subroutine.... - nsresult rv; - NS_WITH_SERVICE(nsIIOService, service, kIOServiceCID, &rv); - if (NS_FAILED(rv)) return rv; - - nsIURI *baseUri = nsnull; - rv = baseURL->QueryInterface(nsIURI::GetIID(), (void**)&baseUri); - if (NS_FAILED(rv)) return rv; - - char *absUrlStr = nsnull; - char *baseSpec = src.ToNewCString(); - if (!baseSpec) return NS_ERROR_OUT_OF_MEMORY; - rv = service->MakeAbsolute(baseSpec, baseUri, &absUrlStr); - NS_RELEASE(baseUri); - absURL = absUrlStr; - nsCRT::free(baseSpec); - delete [] absUrlStr; + NS_MakeAbsoluteURI(src, baseURL, absURL); #endif // NECKO NS_IF_RELEASE(baseURL); diff --git a/layout/generic/nsImageMap.cpp b/layout/generic/nsImageMap.cpp index 0bffac37d0f3..ee39cff45d52 100644 --- a/layout/generic/nsImageMap.cpp +++ b/layout/generic/nsImageMap.cpp @@ -26,6 +26,7 @@ #include "nsIIOService.h" #include "nsIURL.h" #include "nsIServiceManager.h" +#include "nsNeckoUtil.h" static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); #endif // NECKO #include "nsXIFConverter.h" @@ -864,22 +865,19 @@ nsImageMap::IsInside(nscoord aX, nscoord aY, if ((area->mBase).Length() > 0) { // use the area->base as the base uri char *uriStr = (area->mBase).ToNewCString(); - if (!uriStr) return NS_ERROR_OUT_OF_MEMORY; + if (!uriStr) { + return PR_FALSE; + } rv = service->NewURI(uriStr, nsnull, &baseUri); - nsCRT::free(uriStr); + delete [] uriStr; } else { rv = aDocURL->QueryInterface(nsIURI::GetIID(), (void**)&baseUri); } if (NS_FAILED(rv)) return PR_FALSE; - char *absUrlStr = nsnull; - char *urlSpec = (area->mHREF).ToNewCString(); - if (!urlSpec) return NS_ERROR_OUT_OF_MEMORY; - rv = service->MakeAbsolute(urlSpec, baseUri, &absUrlStr); + NS_MakeAbsoluteURI(area->mHREF, baseUri, aAbsURL); + NS_RELEASE(baseUri); - aAbsURL = absUrlStr; - nsCRT::free(urlSpec); - delete [] absUrlStr; #endif // NECKO aTarget = area->mTarget; aAltText = area->mAltText; diff --git a/layout/html/base/src/nsImageFrame.cpp b/layout/html/base/src/nsImageFrame.cpp index ebc2ce53f7cf..0e7385243e67 100644 --- a/layout/html/base/src/nsImageFrame.cpp +++ b/layout/html/base/src/nsImageFrame.cpp @@ -39,6 +39,7 @@ #include "nsIIOService.h" #include "nsIURL.h" #include "nsIServiceManager.h" +#include "nsNeckoUtil.h" static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); #endif // NECKO #include "nsIView.h" @@ -725,23 +726,7 @@ nsImageFrame::HandleEvent(nsIPresContext& aPresContext, nsString empty; NS_MakeAbsoluteURL(baseURL, empty, src, absURL); #else - // XXX Should be a component local subroutine.... - nsresult rv; - NS_WITH_SERVICE(nsIIOService, service, kIOServiceCID, &rv); - if (NS_FAILED(rv)) return rv; - - nsIURI *baseUri = nsnull; - rv = baseURL->QueryInterface(nsIURI::GetIID(), (void**)&baseUri); - if (NS_FAILED(rv)) return rv; - - char *absUrlStr = nsnull; - char *baseSpec = src.ToNewCString(); - if (!baseSpec) return NS_ERROR_OUT_OF_MEMORY; - rv = service->MakeAbsolute(baseSpec, baseUri, &absUrlStr); - NS_RELEASE(baseUri); - absURL = absUrlStr; - nsCRT::free(baseSpec); - delete [] absUrlStr; + NS_MakeAbsoluteURI(src, baseURL, absURL); #endif // NECKO NS_IF_RELEASE(baseURL); diff --git a/layout/html/base/src/nsImageMap.cpp b/layout/html/base/src/nsImageMap.cpp index 0bffac37d0f3..ee39cff45d52 100644 --- a/layout/html/base/src/nsImageMap.cpp +++ b/layout/html/base/src/nsImageMap.cpp @@ -26,6 +26,7 @@ #include "nsIIOService.h" #include "nsIURL.h" #include "nsIServiceManager.h" +#include "nsNeckoUtil.h" static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); #endif // NECKO #include "nsXIFConverter.h" @@ -864,22 +865,19 @@ nsImageMap::IsInside(nscoord aX, nscoord aY, if ((area->mBase).Length() > 0) { // use the area->base as the base uri char *uriStr = (area->mBase).ToNewCString(); - if (!uriStr) return NS_ERROR_OUT_OF_MEMORY; + if (!uriStr) { + return PR_FALSE; + } rv = service->NewURI(uriStr, nsnull, &baseUri); - nsCRT::free(uriStr); + delete [] uriStr; } else { rv = aDocURL->QueryInterface(nsIURI::GetIID(), (void**)&baseUri); } if (NS_FAILED(rv)) return PR_FALSE; - char *absUrlStr = nsnull; - char *urlSpec = (area->mHREF).ToNewCString(); - if (!urlSpec) return NS_ERROR_OUT_OF_MEMORY; - rv = service->MakeAbsolute(urlSpec, baseUri, &absUrlStr); + NS_MakeAbsoluteURI(area->mHREF, baseUri, aAbsURL); + NS_RELEASE(baseUri); - aAbsURL = absUrlStr; - nsCRT::free(urlSpec); - delete [] absUrlStr; #endif // NECKO aTarget = area->mTarget; aAltText = area->mAltText; diff --git a/layout/html/content/src/nsHTMLImageElement.cpp b/layout/html/content/src/nsHTMLImageElement.cpp index d96f7301f471..c97bcbf3f47e 100644 --- a/layout/html/content/src/nsHTMLImageElement.cpp +++ b/layout/html/content/src/nsHTMLImageElement.cpp @@ -41,6 +41,7 @@ #include "nsIIOService.h" #include "nsIURL.h" #include "nsIServiceManager.h" +#include "nsNeckoUtil.h" static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); #endif // NECKO @@ -539,21 +540,7 @@ nsHTMLImageElement::SetSrc(const nsString& aSrc) #ifndef NECKO result = NS_MakeAbsoluteURL(baseURL, empty, aSrc, url); #else - NS_WITH_SERVICE(nsIIOService, service, kIOServiceCID, &result); - if (NS_FAILED(result)) return result; - - nsIURI *baseUri = nsnull; - result = baseURL->QueryInterface(nsIURI::GetIID(), (void**)&baseUri); - if (NS_FAILED(result)) return result; - - char *absUrlStr = nsnull; - char *urlSpec = aSrc.ToNewCString(); - if (!urlSpec) return NS_ERROR_OUT_OF_MEMORY; - result = service->MakeAbsolute(urlSpec, baseUri, &absUrlStr); - NS_RELEASE(baseUri); - url = absUrlStr; - nsCRT::free(urlSpec); - delete [] absUrlStr; + result = NS_MakeAbsoluteURI(aSrc, baseURL, url); #endif // NECKO if (NS_FAILED(result)) { url = aSrc; diff --git a/layout/html/forms/src/nsFormFrame.cpp b/layout/html/forms/src/nsFormFrame.cpp index 98082d7730b4..0ae01c2cb825 100644 --- a/layout/html/forms/src/nsFormFrame.cpp +++ b/layout/html/forms/src/nsFormFrame.cpp @@ -51,6 +51,7 @@ #ifdef NECKO #include "nsIIOService.h" #include "nsIURL.h" +#include "nsNeckoUtil.h" static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); #endif // NECKO #include "nsIDocument.h" @@ -540,22 +541,14 @@ nsFormFrame::OnSubmit(nsIPresContext* aPresContext, nsIFrame* aFrame) #ifndef NECKO NS_MakeAbsoluteURL(docURL, base, href, absURLSpec); #else - nsresult result; - NS_WITH_SERVICE(nsIIOService, service, kIOServiceCID, &result); - if (NS_FAILED(result)) return result; nsIURI *baseUri = nsnull; result = docURL->QueryInterface(nsIURI::GetIID(), (void**)&baseUri); if (NS_FAILED(result)) return result; - char *absUrlStr = nsnull; - char *urlSpec = href.ToNewCString(); - if (!urlSpec) return NS_ERROR_OUT_OF_MEMORY; - result = service->MakeAbsolute(urlSpec, baseUri, &absUrlStr); + NS_MakeAbsoluteURI(href, baseUri, absURLSpec); + NS_RELEASE(baseUri); - nsCRT::free(urlSpec); - absURLSpec = absUrlStr; - delete [] absUrlStr; #endif // NECKO NS_IF_RELEASE(docURL); diff --git a/layout/html/style/src/nsCSSParser.cpp b/layout/html/style/src/nsCSSParser.cpp index 3aba530e73e8..09380546cb26 100644 --- a/layout/html/style/src/nsCSSParser.cpp +++ b/layout/html/style/src/nsCSSParser.cpp @@ -2492,7 +2492,7 @@ PRBool CSSParserImpl::ParseURL(PRInt32& aErrorCode, nsCSSValue& aValue) rv = NS_MakeAbsoluteURI(str, base, absURL); NS_RELEASE(base); - nsCRT::free(str); + delete [] str; #else rv = NS_MakeAbsoluteURL(mURL, baseURL, tk->mIdent, absURL); #endif // NECKO diff --git a/layout/html/style/src/nsCSSStyleSheet.cpp b/layout/html/style/src/nsCSSStyleSheet.cpp index a63338ec6e70..9fcbbe0c9f94 100644 --- a/layout/html/style/src/nsCSSStyleSheet.cpp +++ b/layout/html/style/src/nsCSSStyleSheet.cpp @@ -25,6 +25,7 @@ #include "nsIIOService.h" #include "nsIURL.h" #include "nsIServiceManager.h" +#include "nsNeckoUtil.h" static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); #endif // NECKO #include "nsISupportsArray.h" @@ -1476,24 +1477,12 @@ static PRBool SelectorMatches(nsIPresContext* aPresContext, NS_MakeAbsoluteURL(docURL, base, href, absURLSpec); #else nsresult rv; - NS_WITH_SERVICE(nsIIOService, service, kIOServiceCID, &rv); - if (NS_FAILED(rv)) return PR_FALSE; - nsIURI *baseUri = nsnull; rv = docURL->QueryInterface(nsIURI::GetIID(), (void**)&baseUri); if (NS_FAILED(rv)) return PR_FALSE; - char *absUrlStr = nsnull; - char *urlSpec = href.ToNewCString(); - if (!urlSpec) { - NS_RELEASE(baseUri); - return PR_FALSE; - } - rv = service->MakeAbsolute(urlSpec, baseUri, &absUrlStr); - nsCRT::free(urlSpec); + NS_MakeAbsoluteURI(href, baseUri, absURLSpec); NS_RELEASE(baseUri); - absURLSpec = absUrlStr; - delete [] absUrlStr; #endif // NECKO NS_IF_RELEASE(docURL); diff --git a/layout/html/style/src/nsHTMLStyleSheet.cpp b/layout/html/style/src/nsHTMLStyleSheet.cpp index bbe41af65dda..f9ebbd81dc5f 100644 --- a/layout/html/style/src/nsHTMLStyleSheet.cpp +++ b/layout/html/style/src/nsHTMLStyleSheet.cpp @@ -25,6 +25,7 @@ #include "nsIIOService.h" #include "nsIURL.h" #include "nsIServiceManager.h" +#include "nsNeckoUtil.h" static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); #endif // NECKO #include "nsISupportsArray.h" @@ -630,24 +631,13 @@ PRInt32 HTMLStyleSheetImpl::RulesMatching(nsIPresContext* aPresContext, #ifndef NECKO rv = NS_MakeAbsoluteURL(docURL, base, href, absURLSpec); #else - NS_WITH_SERVICE(nsIIOService, service, kIOServiceCID, &rv); - if (NS_FAILED(rv)) return 0; - nsIURI *baseUri = nsnull; rv = docURL->QueryInterface(nsIURI::GetIID(), (void**)&baseUri); if (NS_FAILED(rv)) return 0; - char *absUrlStr = nsnull; - char *urlSpec = href.ToNewCString(); - if (!urlSpec) { - NS_RELEASE(baseUri); - return 0; - } - rv = service->MakeAbsolute(urlSpec, baseUri, &absUrlStr); + rv = NS_MakeAbsoluteURI(href, baseUri, absURLSpec); + NS_RELEASE(baseUri); - nsCRT::free(urlSpec); - absURLSpec = absUrlStr; - delete [] absUrlStr; #endif // NECKO NS_IF_RELEASE(docURL); diff --git a/layout/style/nsCSSParser.cpp b/layout/style/nsCSSParser.cpp index 3aba530e73e8..09380546cb26 100644 --- a/layout/style/nsCSSParser.cpp +++ b/layout/style/nsCSSParser.cpp @@ -2492,7 +2492,7 @@ PRBool CSSParserImpl::ParseURL(PRInt32& aErrorCode, nsCSSValue& aValue) rv = NS_MakeAbsoluteURI(str, base, absURL); NS_RELEASE(base); - nsCRT::free(str); + delete [] str; #else rv = NS_MakeAbsoluteURL(mURL, baseURL, tk->mIdent, absURL); #endif // NECKO diff --git a/layout/style/nsCSSStyleSheet.cpp b/layout/style/nsCSSStyleSheet.cpp index a63338ec6e70..9fcbbe0c9f94 100644 --- a/layout/style/nsCSSStyleSheet.cpp +++ b/layout/style/nsCSSStyleSheet.cpp @@ -25,6 +25,7 @@ #include "nsIIOService.h" #include "nsIURL.h" #include "nsIServiceManager.h" +#include "nsNeckoUtil.h" static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); #endif // NECKO #include "nsISupportsArray.h" @@ -1476,24 +1477,12 @@ static PRBool SelectorMatches(nsIPresContext* aPresContext, NS_MakeAbsoluteURL(docURL, base, href, absURLSpec); #else nsresult rv; - NS_WITH_SERVICE(nsIIOService, service, kIOServiceCID, &rv); - if (NS_FAILED(rv)) return PR_FALSE; - nsIURI *baseUri = nsnull; rv = docURL->QueryInterface(nsIURI::GetIID(), (void**)&baseUri); if (NS_FAILED(rv)) return PR_FALSE; - char *absUrlStr = nsnull; - char *urlSpec = href.ToNewCString(); - if (!urlSpec) { - NS_RELEASE(baseUri); - return PR_FALSE; - } - rv = service->MakeAbsolute(urlSpec, baseUri, &absUrlStr); - nsCRT::free(urlSpec); + NS_MakeAbsoluteURI(href, baseUri, absURLSpec); NS_RELEASE(baseUri); - absURLSpec = absUrlStr; - delete [] absUrlStr; #endif // NECKO NS_IF_RELEASE(docURL); diff --git a/layout/style/nsHTMLStyleSheet.cpp b/layout/style/nsHTMLStyleSheet.cpp index bbe41af65dda..f9ebbd81dc5f 100644 --- a/layout/style/nsHTMLStyleSheet.cpp +++ b/layout/style/nsHTMLStyleSheet.cpp @@ -25,6 +25,7 @@ #include "nsIIOService.h" #include "nsIURL.h" #include "nsIServiceManager.h" +#include "nsNeckoUtil.h" static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); #endif // NECKO #include "nsISupportsArray.h" @@ -630,24 +631,13 @@ PRInt32 HTMLStyleSheetImpl::RulesMatching(nsIPresContext* aPresContext, #ifndef NECKO rv = NS_MakeAbsoluteURL(docURL, base, href, absURLSpec); #else - NS_WITH_SERVICE(nsIIOService, service, kIOServiceCID, &rv); - if (NS_FAILED(rv)) return 0; - nsIURI *baseUri = nsnull; rv = docURL->QueryInterface(nsIURI::GetIID(), (void**)&baseUri); if (NS_FAILED(rv)) return 0; - char *absUrlStr = nsnull; - char *urlSpec = href.ToNewCString(); - if (!urlSpec) { - NS_RELEASE(baseUri); - return 0; - } - rv = service->MakeAbsolute(urlSpec, baseUri, &absUrlStr); + rv = NS_MakeAbsoluteURI(href, baseUri, absURLSpec); + NS_RELEASE(baseUri); - nsCRT::free(urlSpec); - absURLSpec = absUrlStr; - delete [] absUrlStr; #endif // NECKO NS_IF_RELEASE(docURL);