Commit d241c2a5 authored by Damien George's avatar Damien George
Browse files

py/lexer: Raise SyntaxError when str hex escape sequence is malformed.

Addresses issue #1390.
parent f17e6634
......@@ -454,8 +454,8 @@ STATIC void mp_lexer_next_token_into(mp_lexer_t *lex, bool first_token) {
{
mp_uint_t num = 0;
if (!get_hex(lex, (c == 'x' ? 2 : c == 'u' ? 4 : 8), &num)) {
// TODO error message
assert(0);
// not enough hex chars for escape sequence
lex->tok_kind = MP_TOKEN_INVALID;
}
c = num;
break;
......
......@@ -38,3 +38,21 @@ def a(x):
if x:
print(x)
a(1)
# badly formed hex escape sequences
try:
exec(r"'\x0'")
except SyntaxError:
print("SyntaxError")
try:
exec(r"b'\x0'")
except SyntaxError:
print("SyntaxError")
try:
exec(r"'\u000'")
except SyntaxError:
print("SyntaxError")
try:
exec(r"'\U0000000'")
except SyntaxError:
print("SyntaxError")
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment