Welcome! Log In Create A New Profile

Advanced

[njs] Fixed index generation for global objects.

Alexander Borisov
June 30, 2020 11:24AM
details: https://hg.nginx.org/njs/rev/52dd845c0a36
branches:
changeset: 1441:52dd845c0a36
user: Alexander Borisov <alexander.borisov@nginx.com>
date: Tue Jun 30 18:22:18 2020 +0300
description:
Fixed index generation for global objects.

In c75a8fc6d534 "GLOBAL GET" instruction was introduced to handle unresolved
references. The issue was that the "GLOBAL GET" instruction erroneously
used the assignment variable index as a destination index.
The result was that a variable was assigned the retval of a "GLOBAL GET"
instruction.

The fix is to use a separate temporary index for "GLOBAL GET".

This closes #289 issue on GitHub.

diffstat:

src/njs_generator.c | 2 +-
src/test/njs_unit_test.c | 6 ++++++
2 files changed, 7 insertions(+), 1 deletions(-)

diffs (28 lines):

diff -r fac632b520fa -r 52dd845c0a36 src/njs_generator.c
--- a/src/njs_generator.c Thu Jun 25 13:10:04 2020 +0300
+++ b/src/njs_generator.c Tue Jun 30 18:22:18 2020 +0300
@@ -3384,7 +3384,7 @@ njs_generate_global_reference(njs_vm_t *
njs_vmcode_prop_get_t *prop_get;
const njs_lexer_entry_t *lex_entry;

- index = njs_generate_dest_index(vm, generator, node);
+ index = njs_generate_temp_index_get(vm, generator, node);
if (njs_slow_path(index == NJS_INDEX_ERROR)) {
return NJS_ERROR;
}
diff -r fac632b520fa -r 52dd845c0a36 src/test/njs_unit_test.c
--- a/src/test/njs_unit_test.c Thu Jun 25 13:10:04 2020 +0300
+++ b/src/test/njs_unit_test.c Tue Jun 30 18:22:18 2020 +0300
@@ -17043,6 +17043,12 @@ static njs_unit_test_t njs_test[] =

{ njs_str("for (;1-;) {}"),
njs_str("SyntaxError: Unexpected token \";\" in 1") },
+
+ { njs_str("var str = String(str); str"),
+ njs_str("undefined") },
+
+ { njs_str("var t = \"123\"; t = parseInt(t); t"),
+ njs_str("123") },
};


_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

[njs] Fixed index generation for global objects.

Alexander Borisov 64 June 30, 2020 11:24AM



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

Online Users

Guests: 68
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready