diff options
author | Nico Weber <thakis@chromium.org> | 2020-07-26 20:59:22 -0400 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2020-07-27 12:11:04 +0200 |
commit | 34dc1634418aded05b3b1e8230b39b297e1307ce (patch) | |
tree | 80ef58e834350d62a7f6d8055abfd11523aeb128 | |
parent | c1b7fd644c59ffc38f8c1e2ae798dfe93c5f6693 (diff) | |
download | serenity-34dc1634418aded05b3b1e8230b39b297e1307ce.zip |
CppLexer: Correctly highlight hex escapes in string and char literals
\x consumes all hex digits following it. (If the resulting number
then doesn't fit in the character type, the compiler emits an
error.)
\x would be much more convenient to use if it was always followed
by exactly two hex digits (with \u and \U for higher codepoints),
but that's sadly not the world we live in.
-rw-r--r-- | Libraries/LibGUI/CppLexer.cpp | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/Libraries/LibGUI/CppLexer.cpp b/Libraries/LibGUI/CppLexer.cpp index 74cc9bd245..e5918604bc 100644 --- a/Libraries/LibGUI/CppLexer.cpp +++ b/Libraries/LibGUI/CppLexer.cpp @@ -287,11 +287,8 @@ Vector<CppToken> CppLexer::lex() } case 'x': { size_t hex_digits = 0; - for (size_t i = 0; i < 2; ++i) { - if (!isxdigit(peek(2 + i))) - break; + while (isxdigit(peek(2 + hex_digits))) ++hex_digits; - } return 2 + hex_digits; } case 'u': |