diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner/PreprocessorBugsTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner/PreprocessorBugsTests.java index bf6fca6bf61..16fdff1d319 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner/PreprocessorBugsTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner/PreprocessorBugsTests.java @@ -308,4 +308,23 @@ public class PreprocessorBugsTests extends PreprocessorTestsBase { validateString("unsignedint f();"); validateEOF(); } + + // #if '\0' + // no + // #else + // yes + // #endif + // #if '\1' + // yes + // #else + // no + // #endif + public void testOcatalCharConstant_Bug330747() throws Exception { + initializeScanner(); + validateIdentifier("yes"); + validateIdentifier("yes"); + validateEOF(); + validateProblemCount(0); + } + } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ExpressionEvaluator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ExpressionEvaluator.java index f031cc3fed0..fba757060a2 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ExpressionEvaluator.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ExpressionEvaluator.java @@ -408,7 +408,7 @@ public class ExpressionEvaluator { case 'v': return 0xb; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': - return getNumber(tokenImage, i+1, tokenImage.length-1, 8, IProblem.SCANNER_BAD_OCTAL_FORMAT); + return getNumber(tokenImage, i, tokenImage.length-1, 8, IProblem.SCANNER_BAD_OCTAL_FORMAT); case 'x': case 'u': case 'U': return getNumber(tokenImage, i+1, tokenImage.length-1, 16, IProblem.SCANNER_BAD_HEX_FORMAT);