From: René Scharfe Date: Sun, 25 Sep 2016 07:15:42 +0000 (+0200) Subject: add COPY_ARRAY X-Git-Tag: v2.10.2~37^2~1 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/60566cbb5890abc84fa18c56da70e35ace0b23bf?hp=60566cbb5890abc84fa18c56da70e35ace0b23bf add COPY_ARRAY Add COPY_ARRAY, a safe and convenient helper for copying arrays, complementing ALLOC_ARRAY and REALLOC_ARRAY. Users just specify source, destination and the number of elements; the size of an element is inferred automatically. It checks if the multiplication of size and element count overflows. The inferred size is passed first to st_mult, which allows the division there to be done at compilation time. As a basic type safety check it makes sure the sizes of source and destination elements are the same. That's evaluated at compilation time as well. COPY_ARRAY is safe to use with NULL as source pointer iff 0 elements are to be copied. That convention is used in some cases for initializing arrays. Raw memcpy(3) does not support it -- compilers are allowed to assume that only valid pointers are passed to it and can optimize away NULL checks after such a call. Signed-off-by: Rene Scharfe Signed-off-by: Junio C Hamano ---