details: http://hg.nginx.org/njs/rev/c46da90ca064 branches: changeset: 329:c46da90ca064 user: Igor Sysoev <i...@sysoev.ru> date: Sun Apr 02 12:36:05 2017 +0300 description: Variables may be accessed incorrectly by nested functions.
diffstat: njs/njs_parser.c | 5 +++++ njs/test/njs_unit_test.c | 5 +++++ 2 files changed, 10 insertions(+), 0 deletions(-) diffs (30 lines): diff -r cee288760080 -r c46da90ca064 njs/njs_parser.c --- a/njs/njs_parser.c Sun Apr 02 12:35:11 2017 +0300 +++ b/njs/njs_parser.c Sun Apr 02 12:36:05 2017 +0300 @@ -215,6 +215,11 @@ njs_parser_scope_begin(njs_vm_t *vm, njs if (parent != NULL) { nxt_queue_insert_tail(&parent->nested, &scope->link); + + if (nesting == 0) { + /* Inherit function nesting in blocks. */ + scope->nesting = parent->nesting; + } } return NXT_OK; diff -r cee288760080 -r c46da90ca064 njs/test/njs_unit_test.c --- a/njs/test/njs_unit_test.c Sun Apr 02 12:35:11 2017 +0300 +++ b/njs/test/njs_unit_test.c Sun Apr 02 12:36:05 2017 +0300 @@ -4221,6 +4221,11 @@ static njs_unit_test_t njs_test[] = "var y = f(); y()"), nxt_string("4") }, + { nxt_string("function f() { var x = 4;" + "function g() { if (1) { return 2 + x; } }; return g }" + "var y = f(); y()"), + nxt_string("6") }, + /* Recursive fibonacci. */ { nxt_string("function fibo(n) {" _______________________________________________ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel