xalloc.c 595 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #include "xalloc.h"
  2. #include "logger.h"
  3. #include <stdlib.h>
  4. #include <string.h>
  5. static void die() __attribute__((noreturn));
  6. void* xcalloc(size_t count, size_t size)
  7. {
  8. void* res = calloc(count, size);
  9. if (res == NULL) {
  10. die();
  11. }
  12. return res;
  13. }
  14. void xfree(void *ptr)
  15. {
  16. free(ptr);
  17. }
  18. void* xmalloc(size_t size)
  19. {
  20. void* res = malloc(size);
  21. if (res == NULL) {
  22. die();
  23. }
  24. memset(res, 0 , size);
  25. return res;
  26. }
  27. void* xrealloc(void *ptr, size_t size)
  28. {
  29. void* res = realloc(ptr, size);
  30. if (res == NULL) {
  31. die();
  32. }
  33. return res;
  34. }
  35. void die()
  36. {
  37. log_fatal("zmap", "Out of memory");
  38. }