mirror of
https://github.com/DreamMaoMao/maomaowm.git
synced 2025-10-29 05:40:21 -04:00
40 lines
705 B
C
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;
|
|
}
|