add DUP_ARRAY
commitd2ec87a684e2f9cd1f0c653620a00d74ad5ee2ce
authorRené Scharfe <l.s.r@web.de>
Sun, 1 Jan 2023 21:14:12 +0000 (1 22:14 +0100)
committerJunio C Hamano <gitster@pobox.com>
Mon, 9 Jan 2023 04:28:36 +0000 (9 13:28 +0900)
tree911771cac3baaba2780b0bed60d9c0324e0d4284
parent08e8c266653a486cc441ec031136875bf579f054
add DUP_ARRAY

Add a macro for allocating and populating a shallow copy of an array.
It is intended to replace a sequence like this:

   ALLOC_ARRAY(dst, n);
   COPY_ARRAY(dst, src, n);

With the less repetitve:

   DUP_ARRAY(dst, src, n);

It checks whether the types of source and destination are compatible to
ensure the copy can be used safely.

An easier alternative would be to only consider the source and return
a void pointer, that could be used like this:

   dst = ARRAY_DUP(src, n);

That would be more versatile, as it could be used in declarations as
well.  Making it type-safe would require the use of typeof_unqual from
C23, though.

So use the safe and compatible variant for now.

Signed-off-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-compat-util.h