Merging patch by bz (from mozilla/htmlparser).

ReadWhitespace should convert lone \r to \r\n so callers see it as a newline.
Bug 103833, r=choess, sr=peterv


git-svn-id: svn://10.0.0.236/trunk@155823 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
peterv%propagandism.org
2004-05-02 11:17:44 +00:00
parent beda106d3b
commit affa61ff04

View File

@@ -936,19 +936,27 @@ nsresult nsScanner::ReadWhitespace(nsString& aString,
while(!done && current != end) {
switch(theChar) {
case '\n':
case '\r': ++aNewlinesSkipped;
case ' ' :
case '\b':
case '\t':
case '\r':
{
++aNewlinesSkipped;
PRUnichar thePrevChar = theChar;
theChar = (++current != end) ? *current : '\0';
if ((thePrevChar == '\r' && theChar == '\n') ||
(thePrevChar == '\n' && theChar == '\r')) {
theChar = (++current != end) ? *current : '\0'; // CRLF == LFCR => LF
} else if (thePrevChar == '\r') {
// Lone CR becomes CRLF; callers should know to remove extra CRs
AppendUnicodeTo(origin, current, aString);
aString.Append(PRUnichar('\n'));
origin = current;
}
}
break;
case ' ' :
case '\b':
case '\t':
theChar = (++current != end) ? *current : '\0';
break;
default:
done = PR_TRUE;
AppendUnicodeTo(origin, current, aString);
@@ -965,6 +973,8 @@ nsresult nsScanner::ReadWhitespace(nsString& aString,
return result;
}
//XXXbz callers of this have to manage their lone '\r' themselves if they want
//it to work. Good thing they're all in view-source and it deals.
nsresult nsScanner::ReadWhitespace(nsScannerIterator& aStart,
nsScannerIterator& aEnd,
PRInt32& aNewlinesSkipped) {