// SPDX-License-Identifier: GPL-2.0-only /* Based on labwc (https://github.com/labwc/labwc) */ #define _POSIX_C_SOURCE 200809L #include "mem.h" #include #include #include static void die_if_null(void *ptr) { if (!ptr) { perror("Failed to allocate memory"); exit(EXIT_FAILURE); } } void *xzalloc(size_t size) { if (!size) { return NULL; } void *ptr = calloc(1, size); die_if_null(ptr); return ptr; } void *xrealloc(void *ptr, size_t size) { if (!size) { free(ptr); return NULL; } ptr = realloc(ptr, size); die_if_null(ptr); return ptr; } char *xstrdup(const char *str) { assert(str); char *copy = strdup(str); die_if_null(copy); return copy; }