diff --git a/mozilla/content/html/document/src/nsHTMLDocument.cpp b/mozilla/content/html/document/src/nsHTMLDocument.cpp
index 9c127393d8c..973b1390314 100644
--- a/mozilla/content/html/document/src/nsHTMLDocument.cpp
+++ b/mozilla/content/html/document/src/nsHTMLDocument.cpp
@@ -1967,19 +1967,16 @@ nsHTMLDocument::GetCookie(nsAWritableString& aCookie)
{
nsresult result = NS_OK;
nsAutoString str;
- NS_WITH_SERVICE(nsICookieService, service, kCookieServiceCID, &result);
- char * cookie;
- if ((NS_OK == result) && (nsnull != service) && (nsnull != mDocumentURL)) {
- result = service->GetCookieString(mDocumentURL, &cookie);
+
+ aCookie.Truncate(); // clear current cookie in case service fails; no cookie isn't an error condition.
+
+ nsCOMPtr service = do_GetService(kCookieServiceCID, &result);
+ if (NS_SUCCEEDED(result) && service && mDocumentURL) {
+ nsXPIDLCString cookie;
+ result = service->GetCookieString(mDocumentURL, getter_Copies(cookie));
+ if (NS_SUCCEEDED(result) && cookie)
+ CopyASCIItoUCS2(nsDependentCString(cookie), aCookie);
}
- if (nsnull != cookie) {
- str.AssignWithConversion(cookie);
- nsCRT::free(cookie);
- } else {
- // No Cookie isn't an error condition.
- aCookie.Truncate();
- }
- aCookie.Assign(str);
return result;
}
@@ -1987,9 +1984,8 @@ NS_IMETHODIMP
nsHTMLDocument::SetCookie(const nsAReadableString& aCookie)
{
nsresult result = NS_OK;
- NS_WITH_SERVICE(nsICookieService, service, kCookieServiceCID, &result);
- if ((NS_OK == result) && (nsnull != service) && (nsnull != mDocumentURL)) {
- char *cookie = nsString(aCookie).ToNewCString();
+ nsCOMPtr service = do_GetService(kCookieServiceCID, &result);
+ if (NS_SUCCEEDED(result) && service && mDocumentURL) {
nsCOMPtr globalObj;
nsCOMPtr prompt;
this->GetScriptGlobalObject(getter_AddRefs(globalObj));
@@ -1999,8 +1995,12 @@ nsHTMLDocument::SetCookie(const nsAReadableString& aCookie)
window->GetPrompter(getter_AddRefs(prompt));
}
}
- result = service->SetCookieString(mDocumentURL, prompt, cookie);
- nsCRT::free(cookie);
+ result = NS_ERROR_OUT_OF_MEMORY;
+ char* cookie = ToNewCString(aCookie);
+ if (cookie) {
+ result = service->SetCookieString(mDocumentURL, prompt, cookie);
+ nsCRT::free(cookie);
+ }
}
return result;
}