diff options
author | Jo-Philipp Wich <jo@mein.io> | 2021-04-29 17:52:18 +0200 |
---|---|---|
committer | Jo-Philipp Wich <jo@mein.io> | 2021-04-29 17:52:18 +0200 |
commit | 2bc9bace716fafa408dfc6683ca3ff0f9d8bc44b (patch) | |
tree | 0f0e3480be9e72deac5b36ed8b93142d816b426f | |
parent | f73e20158641a96882565852d0e2a6bf1540d950 (diff) |
lexer: fix infinite loop on parsing unterminated expression blocks
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
-rw-r--r-- | lexer.c | 2 | ||||
-rw-r--r-- | tests/custom/03_bugs/17_hang_on_unclosed_expression_block | 16 |
2 files changed, 18 insertions, 0 deletions
@@ -1107,6 +1107,8 @@ lex_step(uc_lexer *lex, FILE *fp) } /* premature EOF */ + lex->state = UT_LEX_EOF; + return emit_op(lex, lex->source->off, TK_ERROR, ucv_string_new("Unterminated template block")); diff --git a/tests/custom/03_bugs/17_hang_on_unclosed_expression_block b/tests/custom/03_bugs/17_hang_on_unclosed_expression_block new file mode 100644 index 0000000..25128bb --- /dev/null +++ b/tests/custom/03_bugs/17_hang_on_unclosed_expression_block @@ -0,0 +1,16 @@ +When parsing an unclosed expression block, the lexer did end up in an +infinite loop. + +-- Expect stderr -- +Syntax error: Unterminated template block +In line 1, byte 6: + + `{{ 1` + ^-- Near here + + +-- End -- + +-- Testcase -- +{{ 1 +-- End -- |