X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Fdarray%2Fdarray.h;h=0b98fdacddb4febe6d0d92bb5d07bfd4a454fd62;hb=HEAD;hp=58470fdee6c5561e49c265b1a975fa90b6b9ca26;hpb=df8c663a04bb10c3af0b56404ea0f57445e7f656;p=ccan diff --git a/ccan/darray/darray.h b/ccan/darray/darray.h index 58470fde..0b98fdac 100644 --- a/ccan/darray/darray.h +++ b/ccan/darray/darray.h @@ -183,15 +183,21 @@ typedef darray(unsigned long) darray_ulong; #define darray_append_items(arr, items, count) do { \ size_t count_ = (count), oldSize_ = (arr).size; \ - darray_resize(arr, oldSize_ + count_); \ - memcpy((arr).item + oldSize_, items, count_ * sizeof(*(arr).item)); \ + /* Don't memcpy NULL! */ \ + if (count_) { \ + darray_resize(arr, oldSize_ + count_); \ + memcpy((arr).item + oldSize_, items, count_ * sizeof(*(arr).item)); \ + } \ } while(0) #define darray_prepend_items(arr, items, count) do { \ size_t count_ = (count), oldSize_ = (arr).size; \ darray_resize(arr, count_ + oldSize_); \ - memmove((arr).item + count_, (arr).item, oldSize_ * sizeof(*(arr).item)); \ - memcpy((arr).item, items, count_ * sizeof(*(arr).item)); \ + /* Don't memcpy NULL! */ \ + if (count_) { \ + memmove((arr).item + count_, (arr).item, oldSize_ * sizeof(*(arr).item)); \ + memcpy((arr).item, items, count_ * sizeof(*(arr).item)); \ + } \ } while(0) #define darray_append_items_nullterminate(arr, items, count) do { \