#include #include #include void *xcalloc(size_t nmemb, size_t size) { void *ptr = calloc(nmemb, size); if (ptr == NULL && (nmemb || size)) abort(); return ptr; } void *reallocarray(void *ptr, size_t nmemb, size_t size) { if (nmemb && size > (SIZE_MAX / nmemb)) { errno = ENOMEM; return NULL; } return realloc(ptr, nmemb * size); }