xref: /freebsd/contrib/libdiff/test/test004.right.txt (revision 59c8e88e72633afbc47a4ace0d2170d00d51f7dc)
1*59c8e88eSDag-Erling Smørgravint Chunk_bounds_check(Chunk *chunk, size_t start, size_t n)
2*59c8e88eSDag-Erling Smørgrav{
3*59c8e88eSDag-Erling Smørgrav    if (chunk == NULL) return 0;
4*59c8e88eSDag-Erling Smørgrav
5*59c8e88eSDag-Erling Smørgrav    return start <= chunk->length && n <= chunk->length - start;
6*59c8e88eSDag-Erling Smørgrav}
7*59c8e88eSDag-Erling Smørgrav
8*59c8e88eSDag-Erling Smørgravvoid Chunk_copy(Chunk *src, size_t src_start, Chunk *dst, size_t dst_start, size_t n)
9*59c8e88eSDag-Erling Smørgrav{
10*59c8e88eSDag-Erling Smørgrav    if (!Chunk_bounds_check(src, src_start, n)) return;
11*59c8e88eSDag-Erling Smørgrav    if (!Chunk_bounds_check(dst, dst_start, n)) return;
12*59c8e88eSDag-Erling Smørgrav
13*59c8e88eSDag-Erling Smørgrav    memcpy(dst->data + dst_start, src->data + src_start, n);
14*59c8e88eSDag-Erling Smørgrav}
15