details: http://hg.nginx.org/njs/rev/0191fae31b6d branches: changeset: 591:0191fae31b6d user: Dmitry Volyntsev <xei...@nginx.com> date: Tue Aug 28 18:42:43 2018 +0300 description: Fixed exception handling in arguments of a function.
diffstat: njs/njs_function.c | 2 +- njs/test/njs_unit_test.c | 5 +++++ 2 files changed, 6 insertions(+), 1 deletions(-) diffs (34 lines): diff -r cfd82c5cfa93 -r 0191fae31b6d njs/njs_function.c --- a/njs/njs_function.c Tue Aug 28 15:37:14 2018 +0300 +++ b/njs/njs_function.c Tue Aug 28 18:42:43 2018 +0300 @@ -216,6 +216,7 @@ njs_function_frame(njs_vm_t *vm, njs_fun frame = (njs_frame_t *) native_frame; frame->local = value; + frame->previous_active_frame = vm->active_frame; return NXT_OK; } @@ -392,7 +393,6 @@ njs_function_call(njs_vm_t *vm, njs_inde vm->scopes[NJS_SCOPE_CLOSURE + n] = &closure->u.values; } - frame->previous_active_frame = vm->active_frame; vm->active_frame = frame; return NJS_APPLIED; diff -r cfd82c5cfa93 -r 0191fae31b6d njs/test/njs_unit_test.c --- a/njs/test/njs_unit_test.c Tue Aug 28 15:37:14 2018 +0300 +++ b/njs/test/njs_unit_test.c Tue Aug 28 18:42:43 2018 +0300 @@ -5907,6 +5907,11 @@ static njs_unit_test_t njs_test[] = { nxt_string("try {}"), nxt_string("SyntaxError: Missing catch or finally after try in 1") }, + { nxt_string("function f(a) {return a;}; " + "function thrower() {throw TypeError('Oops')}; " + "f(thrower())"), + nxt_string("TypeError: Oops") }, + { nxt_string("var a = 0; try { a = 5 }" "catch (e) { a = 9 } finally { a++ } a"), nxt_string("6") }, _______________________________________________ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel