20 lines
679 B
C
20 lines
679 B
C
#include <stdlib.h>
|
|
|
|
/*
|
|
** The reallocarray() function changes the size of the memory block pointed to
|
|
** by ptr to be large enough for an array of nmemb elements, each of which is
|
|
** size bytes. It is equivalent to the call: `realloc(ptr, nmemb * size);`
|
|
**
|
|
** However, unlike that realloc() call, reallocarray() fails safely in the case
|
|
** where the multiplication would overflow. If such an overflow occurs,
|
|
** reallocarray() returns NULL, sets errno to ENOMEM, and leaves the original
|
|
** block of memory unchanged.
|
|
**
|
|
** FIXME: check safe !!!!
|
|
** FIXME: Check underflow !!
|
|
*/
|
|
void *reallocarray(void *ptr, size_t nmemb, size_t size)
|
|
{
|
|
return (realloc(ptr, nmemb * size));
|
|
}
|