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