diff options
2 files changed, 13 insertions, 3 deletions
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java index b88622d8481..816f687659d 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java @@ -7461,4 +7461,9 @@ public class AST2Tests extends AST2TestBase { public void testFunctionReturningFunctionPointer_413204() throws Exception { parseAndCheckBindings(getAboveComment(), CPP); } + + // double d = 00.9; + public void testOctalFloatingPointLiteral_394048() throws Exception { + parseAndCheckBindings(); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/CPreprocessor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/CPreprocessor.java index f6197357289..2ebdb5a3d09 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/CPreprocessor.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/CPreprocessor.java @@ -976,12 +976,17 @@ public class CPreprocessor implements ILexerLog, IScanner, IAdaptable { ++pos; break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': - isOctal = true; + if (!isFloat) + isOctal = true; ++pos; break; case '8': case '9': - handleProblem(IProblem.SCANNER_BAD_OCTAL_FORMAT, image, number.getOffset(), number.getEndOffset()); - return; + if (!isFloat) { + handleProblem(IProblem.SCANNER_BAD_OCTAL_FORMAT, image, number.getOffset(), number.getEndOffset()); + return; + } + ++pos; + break; } } } |