uint32_t length, i, from, to;
njs_int_t ret;
njs_array_t *keys;
- njs_value_t *entry, *value, character, index, string_obj;
+ njs_value_t *value, character, index, string_obj;
njs_object_t *object;
const u_char *p, *end, *pos;
njs_string_prop_t string_prop;
}
for (i = from; i < to; i++) {
- entry = &njs_array_start(value)[i];
+ if (i < njs_array_len(value)) {
+ ret = handler(vm, args, &njs_array_start(value)[i], i);
+
+ } else {
+ ret = handler(vm, args, njs_value_arg(&njs_value_invalid), i);
+ }
- ret = handler(vm, args, entry, i);
if (njs_slow_path(ret != NJS_OK)) {
if (ret > 0) {
return NJS_DECLINED;
return NJS_ERROR;
}
-
- to = njs_min(to, njs_array_len(value));
}
return NJS_OK;
"catch (e) {i += '; ' + e} i"),
njs_str("1; TypeError: unexpected iterator arguments") },
+ { njs_str("var callz = 0, res = [], arr = 'abc'.split('');"
+ "void arr.find((k) => { if (0 == callz++) { arr.splice(1,1); } res.push(k) });"
+ "res.join(',')"),
+ njs_str("a,c,") },
+
{ njs_str("var a = [];"
"a.findIndex(function(v, i, a) { return v > 1 })"),
njs_str("-1") },
"catch (e) {i += '; ' + e} i"),
njs_str("1; TypeError: unexpected iterator arguments") },
+ { njs_str("var callz = 0, res = [], arr = 'abc'.split('');"
+ "void arr.findIndex((k) => { if (0 == callz++) { arr.splice(1,1); } res.push(k) });"
+ "res.join(',')"),
+ njs_str("a,c,") },
+
{ njs_str("var a = [];"
"a.map(function(v, i, a) { return v + 1 })"),
njs_str("") },