From: Vadim Zhestikov Date: Mon, 24 Oct 2022 14:48:28 +0000 (-0700) Subject: Fixed labeled empty statement. X-Git-Tag: 0.7.8~1 X-Git-Url: http://git.kaiwu.me/postgresql/log/contrib/postgres_fdw/postgres_fdw.c?a=commitdiff_plain;h=1000289796ea4f19cd7d5dec7b312f5829d58f86;p=njs.git Fixed labeled empty statement. This fixes #593 issue on Github. --- diff --git a/src/njs_parser.c b/src/njs_parser.c index 05cfaf17..2b94d3d4 100644 --- a/src/njs_parser.c +++ b/src/njs_parser.c @@ -4701,39 +4701,41 @@ njs_parser_statement_after(njs_parser_t *parser, njs_lexer_token_t *token, new_node = parser->node; - if (new_node->hoist) { - child = &njs_parser_chain_top(parser); + if (new_node != NULL) { + if (new_node->hoist) { + child = &njs_parser_chain_top(parser); - while (*child != NULL) { - node = *child; + while (*child != NULL) { + node = *child; - if (node->hoist) { - break; + if (node->hoist) { + break; + } + + child = &node->left; } - child = &node->left; + last = *child; } - last = *child; - } - - stmt = njs_parser_node_new(parser, NJS_TOKEN_STATEMENT); - if (njs_slow_path(stmt == NULL)) { - return NJS_ERROR; - } + stmt = njs_parser_node_new(parser, NJS_TOKEN_STATEMENT); + if (njs_slow_path(stmt == NULL)) { + return NJS_ERROR; + } - stmt->hoist = new_node->hoist; - stmt->left = last; - stmt->right = new_node; + stmt->hoist = new_node->hoist; + stmt->left = last; + stmt->right = new_node; - *child = stmt; + *child = stmt; - top = (child != &parser->target) ? njs_parser_chain_top(parser) - : stmt; + top = (child != &parser->target) ? njs_parser_chain_top(parser) + : stmt; - parser->node = top; + parser->node = top; - njs_parser_chain_top_set(parser, top); + njs_parser_chain_top_set(parser, top); + } return njs_parser_stack_pop(parser); } diff --git a/src/test/njs_unit_test.c b/src/test/njs_unit_test.c index b8818b44..35614708 100644 --- a/src/test/njs_unit_test.c +++ b/src/test/njs_unit_test.c @@ -3159,6 +3159,9 @@ static njs_unit_test_t njs_test[] = { njs_str("a:\n\n1"), njs_str("1") }, + { njs_str("a:;"), + njs_str("undefined") }, + { njs_str("a:\n\n"), njs_str("SyntaxError: Unexpected end of input in 3") },