diff options
author | Aaron Ballman <aaron@aaronballman.com> | 2012-02-07 13:46:03 +0000 |
---|---|---|
committer | Aaron Ballman <aaron@aaronballman.com> | 2012-02-07 13:46:03 +0000 |
commit | b534a9ed04b343534e5f277b81d1170de3204164 (patch) | |
tree | df8fbcf51cd9e9853c8fe1106f90de329e14680b /lib/Lex | |
parent | a59d20b135bfde058a5a69045bab5ec4e2553f74 (diff) |
Hex literals without a significand no longer crash the lexer. Fixes bug 7910
Patch by Eitan Adler
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149984 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Lex')
-rw-r--r-- | lib/Lex/LiteralSupport.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/Lex/LiteralSupport.cpp b/lib/Lex/LiteralSupport.cpp index 74c396ca96..c178d216ca 100644 --- a/lib/Lex/LiteralSupport.cpp +++ b/lib/Lex/LiteralSupport.cpp @@ -546,6 +546,12 @@ void NumericLiteralParser::ParseNumberStartingWithZero(SourceLocation TokLoc) { // Handle a hex number like 0x1234. if ((*s == 'x' || *s == 'X') && (isxdigit(s[1]) || s[1] == '.')) { s++; + if (!isxdigit(*s)) { + PP.Diag(PP.AdvanceToTokenCharacter(TokLoc, s-ThisTokBegin), \ + diag::err_hexconstant_requires_digits); + hadError = true; + return; + } radix = 16; DigitsBegin = s; s = SkipHexDigits(s); |