diff --git a/mozilla/content/html/document/src/nsHTMLDocument.cpp b/mozilla/content/html/document/src/nsHTMLDocument.cpp
index edba2841b73..cb6432ee0c7 100644
--- a/mozilla/content/html/document/src/nsHTMLDocument.cpp
+++ b/mozilla/content/html/document/src/nsHTMLDocument.cpp
@@ -599,17 +599,6 @@ nsHTMLDocument::StartDocumentLoad(const char* aCommand,
nsCOMPtr dcInfo;
docShell->GetDocumentCharsetInfo(getter_AddRefs(dcInfo));
- PRBool override = PR_FALSE;
-
- nsCOMPtr prf(do_GetService(NS_PREF_PROGID));
- if (prf) {
- char * toOverride = nsnull;
- if(NS_SUCCEEDED(prf->CopyCharPref("intl.charset.override", &toOverride)))
- {
- if (toOverride[0] != 0) override = PR_TRUE;
- PR_FREEIF(toOverride);
- }
- }
//
// The following logic is mirrored in nsWebShell::Embed!
@@ -699,12 +688,13 @@ nsHTMLDocument::StartDocumentLoad(const char* aCommand,
Recycle(forceCharsetFromWebShell);
//TODO: we should define appropriate constant for force charset
charsetSource = kCharsetFromPreviousLoading;
- } else if ((dcInfo.get() != NULL) && (override)) {
+ } else if (dcInfo) {
nsCOMPtr csAtom;
dcInfo->GetForcedCharset(getter_AddRefs(csAtom));
if (csAtom.get() != NULL) {
csAtom->ToString(charset);
charsetSource = kCharsetFromPreviousLoading;
+ dcInfo->SetForcedCharset(NULL);
}
}
}
diff --git a/mozilla/intl/chardet/src/nsDocumentCharsetInfo.cpp b/mozilla/intl/chardet/src/nsDocumentCharsetInfo.cpp
index 89da249de30..d30d968f4b6 100644
--- a/mozilla/intl/chardet/src/nsDocumentCharsetInfo.cpp
+++ b/mozilla/intl/chardet/src/nsDocumentCharsetInfo.cpp
@@ -85,6 +85,7 @@ NS_IMETHODIMP nsDocumentCharsetInfo::SetForcedCharset(nsIAtom * aCharset)
NS_IMETHODIMP nsDocumentCharsetInfo::GetForcedCharset(nsIAtom ** aResult)
{
*aResult = mForcedCharset;
+ if (mForcedCharset) NS_ADDREF(*aResult);
return NS_OK;
}
diff --git a/mozilla/layout/html/document/src/nsHTMLDocument.cpp b/mozilla/layout/html/document/src/nsHTMLDocument.cpp
index edba2841b73..cb6432ee0c7 100644
--- a/mozilla/layout/html/document/src/nsHTMLDocument.cpp
+++ b/mozilla/layout/html/document/src/nsHTMLDocument.cpp
@@ -599,17 +599,6 @@ nsHTMLDocument::StartDocumentLoad(const char* aCommand,
nsCOMPtr dcInfo;
docShell->GetDocumentCharsetInfo(getter_AddRefs(dcInfo));
- PRBool override = PR_FALSE;
-
- nsCOMPtr prf(do_GetService(NS_PREF_PROGID));
- if (prf) {
- char * toOverride = nsnull;
- if(NS_SUCCEEDED(prf->CopyCharPref("intl.charset.override", &toOverride)))
- {
- if (toOverride[0] != 0) override = PR_TRUE;
- PR_FREEIF(toOverride);
- }
- }
//
// The following logic is mirrored in nsWebShell::Embed!
@@ -699,12 +688,13 @@ nsHTMLDocument::StartDocumentLoad(const char* aCommand,
Recycle(forceCharsetFromWebShell);
//TODO: we should define appropriate constant for force charset
charsetSource = kCharsetFromPreviousLoading;
- } else if ((dcInfo.get() != NULL) && (override)) {
+ } else if (dcInfo) {
nsCOMPtr csAtom;
dcInfo->GetForcedCharset(getter_AddRefs(csAtom));
if (csAtom.get() != NULL) {
csAtom->ToString(charset);
charsetSource = kCharsetFromPreviousLoading;
+ dcInfo->SetForcedCharset(NULL);
}
}
}