diff --git a/mozilla/htmlparser/src/nsHTMLContentSinkStream.cpp b/mozilla/htmlparser/src/nsHTMLContentSinkStream.cpp index 73cf8af52ad..a2f477f7c6c 100644 --- a/mozilla/htmlparser/src/nsHTMLContentSinkStream.cpp +++ b/mozilla/htmlparser/src/nsHTMLContentSinkStream.cpp @@ -215,8 +215,8 @@ nsHTMLContentSinkStream::InitEncoder() NS_ASSERTION(nsnull != calias, "cannot find charset alias"); if(NS_SUCCEEDED(res) && (nsnull != calias)) - { - res = calias->GetPreferred(mCharsetOverride, charsetName); + { + res = calias->GetPreferred(mCharsetOverride, charsetName); nsServiceManager::ReleaseService(kCharsetAliasCID, calias); } if (NS_FAILED(res)) @@ -291,9 +291,18 @@ void nsHTMLContentSinkStream::Write(const nsString& aString) if (mBodyOnly && !mInBody) return; + // If an encoder is being used then convert first convert the input string + if (mUnicodeEncoder) + EncodeToBuffer(aString); + // No need to re-encode strings, since they're going from UCS2 to UCS2 if (mString) - mString->Append(aString); + { + if (mUnicodeEncoder) + mString->Append(mBuffer, mBufferLength); + else + mString->Append(aString); + } if (!mStream) return; @@ -304,7 +313,6 @@ void nsHTMLContentSinkStream::Write(const nsString& aString) // If an encoder is being used then convert first convert the input string if (mUnicodeEncoder) { - EncodeToBuffer(aString); out.write(mBuffer, mBufferLength); } // else just write the unicode diff --git a/mozilla/parser/htmlparser/src/nsHTMLContentSinkStream.cpp b/mozilla/parser/htmlparser/src/nsHTMLContentSinkStream.cpp index 73cf8af52ad..a2f477f7c6c 100644 --- a/mozilla/parser/htmlparser/src/nsHTMLContentSinkStream.cpp +++ b/mozilla/parser/htmlparser/src/nsHTMLContentSinkStream.cpp @@ -215,8 +215,8 @@ nsHTMLContentSinkStream::InitEncoder() NS_ASSERTION(nsnull != calias, "cannot find charset alias"); if(NS_SUCCEEDED(res) && (nsnull != calias)) - { - res = calias->GetPreferred(mCharsetOverride, charsetName); + { + res = calias->GetPreferred(mCharsetOverride, charsetName); nsServiceManager::ReleaseService(kCharsetAliasCID, calias); } if (NS_FAILED(res)) @@ -291,9 +291,18 @@ void nsHTMLContentSinkStream::Write(const nsString& aString) if (mBodyOnly && !mInBody) return; + // If an encoder is being used then convert first convert the input string + if (mUnicodeEncoder) + EncodeToBuffer(aString); + // No need to re-encode strings, since they're going from UCS2 to UCS2 if (mString) - mString->Append(aString); + { + if (mUnicodeEncoder) + mString->Append(mBuffer, mBufferLength); + else + mString->Append(aString); + } if (!mStream) return; @@ -304,7 +313,6 @@ void nsHTMLContentSinkStream::Write(const nsString& aString) // If an encoder is being used then convert first convert the input string if (mUnicodeEncoder) { - EncodeToBuffer(aString); out.write(mBuffer, mBufferLength); } // else just write the unicode