details: http://hg.nginx.org/njs/rev/462f7d2113f9 branches: changeset: 205:462f7d2113f9 user: Igor Sysoev <i...@sysoev.ru> date: Tue Oct 18 15:48:13 2016 +0300 description: Fixes in generating "continue" and "break" statements.
diffstat: njs/njs_generator.c | 8 ++++---- njs/test/njs_unit_test.c | 3 +++ 2 files changed, 7 insertions(+), 4 deletions(-) diffs (38 lines): diff -r d055824ff0f7 -r 462f7d2113f9 njs/njs_generator.c --- a/njs/njs_generator.c Mon Oct 17 23:29:15 2016 +0300 +++ b/njs/njs_generator.c Tue Oct 18 15:48:13 2016 +0300 @@ -1089,8 +1089,8 @@ found: patch = nxt_mem_cache_alloc(vm->mem_cache_pool, sizeof(njs_parser_patch_t)); if (nxt_fast_path(patch != NULL)) { - patch->next = parser->block->continuation; - parser->block->continuation = patch; + patch->next = block->continuation; + block->continuation = patch; njs_generate_code(parser, njs_vmcode_jump_t, jump); jump->code.operation = njs_vmcode_jump; @@ -1133,8 +1133,8 @@ found: patch = nxt_mem_cache_alloc(vm->mem_cache_pool, sizeof(njs_parser_patch_t)); if (nxt_fast_path(patch != NULL)) { - patch->next = parser->block->exit; - parser->block->exit = patch; + patch->next = block->exit; + block->exit = patch; njs_generate_code(parser, njs_vmcode_jump_t, jump); jump->code.operation = njs_vmcode_jump; diff -r d055824ff0f7 -r 462f7d2113f9 njs/test/njs_unit_test.c --- a/njs/test/njs_unit_test.c Mon Oct 17 23:29:15 2016 +0300 +++ b/njs/test/njs_unit_test.c Tue Oct 18 15:48:13 2016 +0300 @@ -1657,6 +1657,9 @@ static njs_unit_test_t njs_test[] = "for (i in a) { if (a[i] > 4) continue; s += a[i] } s"), nxt_string("10") }, + { nxt_string("var a; for (a = 1; a; a--) switch (a) { case 0: continue }"), + nxt_string("undefined") }, + /* break. */ { nxt_string("break"), _______________________________________________ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel