summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNico Weber <thakis@chromium.org>2020-07-26 20:59:22 -0400
committerAndreas Kling <kling@serenityos.org>2020-07-27 12:11:04 +0200
commit34dc1634418aded05b3b1e8230b39b297e1307ce (patch)
tree80ef58e834350d62a7f6d8055abfd11523aeb128
parentc1b7fd644c59ffc38f8c1e2ae798dfe93c5f6693 (diff)
downloadserenity-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.cpp5
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':