From: Artem S. Povalyukhin Date: Sat, 23 Feb 2019 01:21:44 +0000 (+0300) Subject: Fixed Array.prototype.fill(). X-Git-Tag: 0.2.8~5 X-Git-Url: http://git.kaiwu.me/sitemap.xml?a=commitdiff_plain;h=67c14a0a3d77e4ff2fbe59fabca3a01f65b2bf16;p=njs.git Fixed Array.prototype.fill(). This closes #71 issue on Github. --- 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("") },