details: https://hg.nginx.org/njs/rev/1718603aae6a branches: changeset: 797:1718603aae6a user: Artem S. Povalyukhin <artem.povalu...@gmail.com> date: Sat Feb 23 04:21:44 2019 +0300 description: Fixed Array.prototype.fill().
This closes #71 issue on Github. diffstat: njs/njs_array.c | 11 +++++++---- njs/test/njs_unit_test.c | 4 ++++ 2 files changed, 11 insertions(+), 4 deletions(-) diffs (46 lines): diff -r 25b394b0e953 -r 1718603aae6a njs/njs_array.c --- a/njs/njs_array.c Sat Feb 23 04:20:23 2019 +0300 +++ b/njs/njs_array.c Sat Feb 23 04:21:44 2019 +0300 @@ -1372,12 +1372,13 @@ static njs_ret_t njs_array_prototype_fill(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, njs_index_t unused) { - nxt_int_t i, start, end, length; - njs_array_t *array; + nxt_int_t i, start, end, length; + njs_array_t *array; + const njs_value_t *value; vm->retval = args[0]; - if (nargs < 2 || !njs_is_array(&args[0])) { + if (!njs_is_array(&args[0])) { return NXT_OK; } @@ -1423,8 +1424,10 @@ njs_array_prototype_fill(njs_vm_t *vm, n } } + value = njs_arg(args, nargs, 1); + for (i = start; i < end; i++) { - array->start[i] = args[1]; + array->start[i] = *value; } return NXT_OK; diff -r 25b394b0e953 -r 1718603aae6a njs/test/njs_unit_test.c --- a/njs/test/njs_unit_test.c Sat Feb 23 04:20:23 2019 +0300 +++ b/njs/test/njs_unit_test.c Sat Feb 23 04:21:44 2019 +0300 @@ -3668,6 +3668,10 @@ static njs_unit_test_t njs_test[] = { nxt_string("[1,2,3].fill({a:\"b\"}, 1, 2);"), nxt_string("1,[object Object],3") }, + { nxt_string("Array(3).fill().reduce(function(a, x)" + "{ return a + (x === undefined); }, 0)"), + nxt_string("3") }, + { nxt_string("var a = [];" "a.filter(function(v, i, a) { return v > 1 })"), nxt_string("") }, _______________________________________________ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel