Welcome! Log In Create A New Profile

Advanced

[njs] Fixed labeled empty statement.

Vadim Zhestikov via nginx-devel
October 24, 2022 01:28PM
details: https://hg.nginx.org/njs/rev/594821c68b83
branches:
changeset: 1981:594821c68b83
user: Vadim Zhestikov <v.zhestikov@f5.com>
date: Mon Oct 24 07:48:28 2022 -0700
description:
Fixed labeled empty statement.

This fixes #593 issue on Github.

diffstat:

src/njs_parser.c | 64 ++++++++++++++++++++++++-----------------------
src/test/njs_unit_test.c | 3 ++
2 files changed, 36 insertions(+), 31 deletions(-)

diffs (89 lines):

diff -r ebc48ac9f656 -r 594821c68b83 src/njs_parser.c
--- a/src/njs_parser.c Fri Oct 21 18:48:39 2022 -0700
+++ b/src/njs_parser.c Mon Oct 24 07:48:28 2022 -0700
@@ -4701,39 +4701,41 @@ njs_parser_statement_after(njs_parser_t

new_node = parser->node;

- if (new_node->hoist) {
- child = &njs_parser_chain_top(parser);
-
- while (*child != NULL) {
- node = *child;
-
- if (node->hoist) {
- break;
+ if (new_node != NULL) {
+ if (new_node->hoist) {
+ child = &njs_parser_chain_top(parser);
+
+ while (*child != NULL) {
+ node = *child;
+
+ if (node->hoist) {
+ break;
+ }
+
+ child = &node->left;
}

- child = &node->left;
- }
-
- last = *child;
- }
-
- 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;
-
- *child = stmt;
-
- top = (child != &parser->target) ? njs_parser_chain_top(parser)
- : stmt;
-
- parser->node = top;
-
- njs_parser_chain_top_set(parser, top);
+ last = *child;
+ }
+
+ 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;
+
+ *child = stmt;
+
+ top = (child != &parser->target) ? njs_parser_chain_top(parser)
+ : stmt;
+
+ parser->node = top;
+
+ njs_parser_chain_top_set(parser, top);
+ }

return njs_parser_stack_pop(parser);
}
diff -r ebc48ac9f656 -r 594821c68b83 src/test/njs_unit_test.c
--- a/src/test/njs_unit_test.c Fri Oct 21 18:48:39 2022 -0700
+++ b/src/test/njs_unit_test.c Mon Oct 24 07:48:28 2022 -0700
@@ -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") },

_______________________________________________
nginx-devel mailing list -- nginx-devel@nginx.org
To unsubscribe send an email to nginx-devel-leave@nginx.org
Subject Author Views Posted

[njs] Fixed labeled empty statement.

Vadim Zhestikov via nginx-devel 442 October 24, 2022 01:28PM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 173
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready