}
} else {
- memcpy(&buffer->u.u8[0], &src_tarray->buffer->u.u8[0], size);
+ memcpy(&buffer->u.u8[0], njs_typed_array_start(src_tarray), size);
}
} else if (!njs_is_array_buffer(value) && njs_is_object(value)) {
start = start * element_size;
count = count * element_size;
- njs_slice_memcpy(&new_buffer->u.u8[0], &buffer->u.u8[start], count);
+ njs_slice_memcpy(&new_buffer->u.u8[0],
+ &buffer->u.u8[njs_typed_array_offset(array) + start],
+ count);
} else {
for (i = 0; i < count; i++) {
return NJS_ERROR;
}
- memcpy(&array->buffer->u.u8[0], &self->buffer->u.u8[0],
+ memcpy(&array->buffer->u.u8[0], njs_typed_array_start(self),
self->byte_length);
}
return NJS_ERROR;
}
- memcpy(&array->buffer->u.u8[0], &self->buffer->u.u8[0],
+ memcpy(&array->buffer->u.u8[0], njs_typed_array_start(self),
self->byte_length);
}
" return [a.toReversed(), a].toString() === '1,2,3,3,2,1'})"),
njs_str("true") },
+ /* Same-type copies must honor the source view offset. */
+
+ { njs_str(NJS_TYPED_ARRAY_LIST
+ ".every(v=>{var a = (new v([0,1,2,3,4])).subarray(2);"
+ " return (new v(a)).toString() === '2,3,4'})"),
+ njs_str("true") },
+
+ { njs_str(NJS_TYPED_ARRAY_LIST
+ ".every(v=>{var a = (new v([0,1,2,3,4])).subarray(2);"
+ " return a.slice(1, 3).toString() === '3,4'})"),
+ njs_str("true") },
+
+ { njs_str(NJS_TYPED_ARRAY_LIST
+ ".every(v=>{var a = (new v([0,1,2,3,4])).subarray(2);"
+ " return a.toReversed().toString() === '4,3,2'})"),
+ njs_str("true") },
+
+ { njs_str(NJS_TYPED_ARRAY_LIST
+ ".every(v=>{var a = (new v([0,3,2,1,4])).subarray(2);"
+ " return a.toSorted().toString() === '1,2,4'})"),
+ njs_str("true") },
+
{ njs_str("Uint8Array.prototype.sort.call(1)"),
njs_str("TypeError: this is not a typed array") },