From 041bf4a5156c808cfbe346a299c5b0f4b8f60875 Mon Sep 17 00:00:00 2001 From: hongzhidao Date: Tue, 20 Aug 2019 22:59:38 -0400 Subject: [PATCH] Fixed division token in lexer. --- src/njs_lexer.c | 11 +++++++---- src/test/njs_unit_test.c | 3 +++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/njs_lexer.c b/src/njs_lexer.c index 76b840e5..61726407 100644 --- a/src/njs_lexer.c +++ b/src/njs_lexer.c @@ -504,7 +504,7 @@ njs_lexer_next_token(njs_lexer_t *lexer, njs_lexer_token_t *lt) token = njs_lexer_division(lexer, token); if (token != NJS_TOKEN_AGAIN) { - return token; + goto done; } continue; @@ -557,8 +557,7 @@ njs_lexer_next_token(njs_lexer_t *lexer, njs_lexer_token_t *lt) /* Fall through. */ default: - lt->text.length = lexer->start - lt->text.start; - return token; + goto done; } multi: @@ -566,9 +565,13 @@ njs_lexer_next_token(njs_lexer_t *lexer, njs_lexer_token_t *lt) return njs_lexer_multi(lexer, lt, token, n, multi); } + token = NJS_TOKEN_END; + +done: + lt->text.length = lexer->start - lt->text.start; - return NJS_TOKEN_END; + return token; } diff --git a/src/test/njs_unit_test.c b/src/test/njs_unit_test.c index 24a43538..43ec8640 100644 --- a/src/test/njs_unit_test.c +++ b/src/test/njs_unit_test.c @@ -66,6 +66,9 @@ static njs_unit_test_t njs_test[] = { njs_str("var \n a, \n b; b"), njs_str("undefined") }, + { njs_str("var a / ="), + njs_str("SyntaxError: Unexpected token \"/\" in 1") }, + { njs_str("var a = 1; var b; a"), njs_str("1") }, -- 2.47.3