From 67c14a0a3d77e4ff2fbe59fabca3a01f65b2bf16 Mon Sep 17 00:00:00 2001 From: "Artem S. Povalyukhin" Date: Sat, 23 Feb 2019 04:21:44 +0300 Subject: [PATCH] Fixed Array.prototype.fill(). This closes #71 issue on Github. --- njs/njs_array.c | 11 +++++++---- njs/test/njs_unit_test.c | 4 ++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/njs/njs_array.c b/njs/njs_array.c index e78a7923..01228909 100644 --- a/njs/njs_array.c +++ b/njs/njs_array.c @@ -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, njs_value_t *args, nxt_uint_t nargs, } } + 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 --git a/njs/test/njs_unit_test.c b/njs/test/njs_unit_test.c index 6a776d17..cc733d59 100644 --- a/njs/test/njs_unit_test.c +++ b/njs/test/njs_unit_test.c @@ -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("") }, -- 2.47.3