1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-03 22:35:43 +02:00

patch from Devin Steffler for 77805

This commit is contained in:
Andrew Niefer 2004-11-15 22:17:43 +00:00
parent 50054ebf36
commit ead89d4bbb
2 changed files with 25 additions and 3 deletions

View file

@ -2325,5 +2325,12 @@ public class CompleteParseASTTest extends CompleteParseBaseTest
Iterator i = callback.getProblems();
assertFalse( i.hasNext() );
}
public void testBug77805() throws Exception {
Writer writer = new StringWriter();
writer.write("#if X // Do something only if X is true\n"); //$NON-NLS-1$
writer.write("/* some statements */\n"); //$NON-NLS-1$
writer.write("#endif\n"); //$NON-NLS-1$
parse(writer.toString());
}
}

View file

@ -798,9 +798,24 @@ public class ExpressionEvaluator {
if (p + 1 < limit) {
if (buffer[p + 1] == '/') {
// C++ comment, skip rest of line
return;
} else if (buffer[p + 1] == '*') {
// C comment, find closing */
for (bufferPos[bufferStackPos] += 2;
bufferPos[bufferStackPos] < limit;
++bufferPos[bufferStackPos]) {
p = bufferPos[bufferStackPos];
if (buffer[p] == '\\' && p + 1 < limit && buffer[p + 1] == '\n') {
bufferPos[bufferStackPos]+=2;
continue;
}
if (buffer[p] == '\\' && p + 1 < limit && buffer[p + 1] == '\r' && p + 2 < limit && buffer[p + 2] == '\n') {
bufferPos[bufferStackPos]+=3;
continue;
}
if (buffer[p] == '\n')
break; // break when find non-escaped newline
}
continue;
} else if (buffer[p + 1] == '*') { // C comment, find closing */
for (bufferPos[bufferStackPos] += 2;
bufferPos[bufferStackPos] < limit;
++bufferPos[bufferStackPos]) {