jscript: Fix Array.reduce when last element doesn't exist.

Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
This commit is contained in:
Gabriel Ivăncescu 2023-10-17 16:18:54 +03:00 committed by Alexandre Julliard
parent 40b36d4208
commit ed674d63a4
2 changed files with 6 additions and 1 deletions

View file

@ -1422,8 +1422,10 @@ static HRESULT Array_reduce(script_ctx_t *ctx, jsval_t vthis, WORD flags, unsign
for(k = 0; k < length; k++) {
hres = jsdisp_get_idx(jsthis, k, &callback_args[1]);
if(hres == DISP_E_UNKNOWNNAME)
if(hres == DISP_E_UNKNOWNNAME) {
hres = S_OK;
continue;
}
if(FAILED(hres))
break;

View file

@ -1336,6 +1336,9 @@ sync_test("reduce", function() {
r = [1,2,3].reduce(function(a, value) { return a + value; }, "str");
ok(r === "str123", "reduce() returned " + r);
r = [1,2,].reduce(function(a, value) { return a + value; }, "str");
ok(r === "str12", "reduce() returned " + r);
array = [1,2,3];
r = array.reduce(function(a, value, index, src) {
ok(src === array, "src != array");