19eb461aaSDag-Erling Smørgravvoid Chunk_copy(Chunk *src, size_t src_start, Chunk *dst, size_t dst_start, size_t n) 29eb461aaSDag-Erling Smørgrav{ 39eb461aaSDag-Erling Smørgrav if (!Chunk_bounds_check(src, src_start, n)) return; 49eb461aaSDag-Erling Smørgrav if (!Chunk_bounds_check(dst, dst_start, n)) return; 59eb461aaSDag-Erling Smørgrav 69eb461aaSDag-Erling Smørgrav memcpy(dst->data + dst_start, src->data + src_start, n); 79eb461aaSDag-Erling Smørgrav} 89eb461aaSDag-Erling Smørgrav 99eb461aaSDag-Erling Smørgravint Chunk_bounds_check(Chunk *chunk, size_t start, size_t n) 109eb461aaSDag-Erling Smørgrav{ 119eb461aaSDag-Erling Smørgrav if (chunk == NULL) return 0; 129eb461aaSDag-Erling Smørgrav 139eb461aaSDag-Erling Smørgrav return start <= chunk->length && n <= chunk->length - start; 149eb461aaSDag-Erling Smørgrav} 15