fixed recently introduced i18n bugs

git-svn-id: svn://10.0.0.236/trunk@23117 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
rickg%netscape.com
1999-03-07 19:23:28 +00:00
parent a76538f256
commit 0608af3478
6 changed files with 128 additions and 92 deletions

View File

@@ -56,7 +56,7 @@ nsScanner::nsScanner(nsString& anHTMLString) :
mMarkPos=-1;
mFileStream=0;
nsAutoString defaultCharset(DEFAULTCHARSET);
mUnicodeDecoder = nsnull;
mUnicodeDecoder = 0;
SetDocumentCharset(defaultCharset);
}
@@ -90,7 +90,7 @@ nsScanner::nsScanner(nsString& aFilename,PRBool aCreateStream) :
mFileStream=new fstream(buffer,ios::in);
#endif
} //if
mUnicodeDecoder = nsnull;
mUnicodeDecoder = 0;
nsAutoString defaultCharset(DEFAULTCHARSET);
SetDocumentCharset(defaultCharset);
@@ -114,7 +114,7 @@ nsScanner::nsScanner(nsString& aFilename,fstream& aStream,PRBool assumeOwnership
mTotalRead=0;
mOwnsStream=assumeOwnership;
mFileStream=&aStream;
mUnicodeDecoder = nsnull;
mUnicodeDecoder = 0;
nsAutoString defaultCharset(DEFAULTCHARSET);
SetDocumentCharset(defaultCharset);
}
@@ -220,19 +220,21 @@ PRBool nsScanner::Append(nsString& aBuffer) {
*/
PRBool nsScanner::Append(const char* aBuffer, PRUint32 aLen){
PRInt32 unicharLength = 0;
PRInt32 srcLength = aLen;
mUnicodeDecoder->Length(aBuffer, 0, aLen, &unicharLength);
PRUnichar *unichars = new PRUnichar [ unicharLength ];
nsresult res = mUnicodeDecoder->Convert(unichars, 0, &unicharLength,
aBuffer, 0, &srcLength );
mBuffer.Append(unichars, unicharLength);
delete unichars;
mTotalRead += unicharLength;
// mBuffer.Append(aBuffer,aLen);
// mTotalRead+=aLen;
if(mUnicodeDecoder) {
PRInt32 unicharLength = 0;
PRInt32 srcLength = aLen;
mUnicodeDecoder->Length(aBuffer, 0, aLen, &unicharLength);
PRUnichar *unichars = new PRUnichar [ unicharLength ];
nsresult res = mUnicodeDecoder->Convert(unichars, 0, &unicharLength,aBuffer, 0, &srcLength );
mBuffer.Append(unichars, unicharLength);
delete unichars;
mTotalRead += unicharLength;
}
else {
mBuffer.Append(aBuffer,aLen);
mTotalRead+=aLen;
}
return PR_TRUE;
}