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@155797 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
bzbarsky%mit.edu
2004-05-01 05:39:54 +00:00
parent 3016c2db2f
commit a6d2b7a42f

View File

@@ -935,19 +935,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);
@@ -964,6 +972,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) {