njs_array_prototype_slice_copy(njs_vm_t *vm, njs_value_t *this,
int64_t start, int64_t length, njs_value_t *retval)
{
- u_char *c, buf[4];
size_t size;
uint32_t n;
njs_int_t ret;
do {
value = &array->start[n++];
- c = buf;
- c = njs_utf8_copy(c, &src, end);
- size = c - buf;
+ size = njs_utf8_next(src, end) - src;
- ret = njs_string_new(vm, value, buf, size, 1);
+ ret = njs_string_new(vm, value, src, size, 1);
if (njs_slow_path(ret != NJS_OK)) {
return NJS_ERROR;
}
- length--;
- } while (length != 0);
+ src += size;
+ } while (src != end);
} else if (njs_is_object(this)) {
njs_object_enumerate_string(njs_vm_t *vm, const njs_value_t *value,
njs_array_t *items, uint32_t flags)
{
- u_char buf[4], *c;
uint32_t i, len, size;
njs_int_t ret;
njs_value_t *item, *string;
end = src + str_prop.size;
do {
- c = buf;
+ size = njs_utf8_next(src, end) - src;
- c = njs_utf8_copy(c, &src, end);
- size = c - buf;
-
- ret = njs_string_new(vm, item, buf, size, 1);
+ ret = njs_string_new(vm, item, src, size, 1);
if (njs_slow_path(ret != NJS_OK)) {
return NJS_ERROR;
}
item++;
+ src += size;
} while (src != end);
}
string = &entry->start[1];
- c = buf;
-
- c = njs_utf8_copy(c, &src, end);
- size = c - buf;
+ size = njs_utf8_next(src, end) - src;
- ret = njs_string_new(vm, string, buf, size, 1);
+ ret = njs_string_new(vm, string, src, size, 1);
if (njs_slow_path(ret != NJS_OK)) {
return NJS_ERROR;
}
njs_set_array(item, entry);
item++;
+ src += size;
} while (src != end);
}