Add hb_memcpy() that does len=0 check

This commit is contained in:
Behdad Esfahbod 2021-07-27 13:10:41 -06:00
parent 5f801da945
commit bf2c87bfe6
2 changed files with 10 additions and 6 deletions

View File

@ -760,6 +760,14 @@ static inline unsigned int ARRAY_LENGTH (const Type (&)[n]) { return n; }
#define ARRAY_LENGTH_CONST(__array) ((signed int) (sizeof (__array) / sizeof (__array[0])))
static inline void *
hb_memcpy (void *__restrict dst, const void *__restrict src, size_t len)
{
/* It's illegal to pass 0 as size to memcpy. */
if (unlikely (!len)) return dst;
return memcpy (dst, src, len);
}
static inline int
hb_memcmp (const void *a, const void *b, unsigned int len)
{

View File

@ -489,12 +489,8 @@ struct hb_set_t
return;
population = other.population;
if (!count)
// memcpy is not necessary if the vectors are zero length. This avoids possibly
// passing nullptr to memcpy.
return;
memcpy ((void *) pages, (const void *) other.pages, count * pages.item_size);
memcpy ((void *) page_map, (const void *) other.page_map, count * page_map.item_size);
hb_memcpy ((void *) pages, (const void *) other.pages, count * pages.item_size);
hb_memcpy ((void *) page_map, (const void *) other.page_map, count * page_map.item_size);
}
bool is_equal (const hb_set_t &other) const