maomaowm/src/common/mem.c
2025-06-07 14:40:13 +08:00

40 lines
705 B
C

// SPDX-License-Identifier: GPL-2.0-only
/* Based on labwc (https://github.com/labwc/labwc) */
#define _POSIX_C_SOURCE 200809L
#include "mem.h"
#include <assert.h>
#include <stdio.h>
#include <string.h>
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;
}