mirror of https://git.wuffs.org/MWCC
55 lines
1.1 KiB
C
55 lines
1.1 KiB
C
#include "oslib.h"
|
|
|
|
void *xmalloc(const char *what, int size) {
|
|
void *ret;
|
|
|
|
ret = malloc(size ? size : 1);
|
|
if (!ret) {
|
|
fprintf(
|
|
stderr,
|
|
"*** Out of memory when allocating %d bytes%s%s",
|
|
size,
|
|
what ? " for " : "",
|
|
what ? what : "");
|
|
exit(-23);
|
|
return 0;
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
void *xcalloc(const char *what, int size) {
|
|
void *ret;
|
|
|
|
ret = xmalloc(what, size);
|
|
memset(ret, 0, size);
|
|
return ret;
|
|
}
|
|
|
|
void *xrealloc(const char *what, void *old, int size) {
|
|
void *ret;
|
|
|
|
ret = realloc(old, size ? size : 1);
|
|
if (!ret) {
|
|
fprintf(
|
|
stderr,
|
|
"*** Out of memory when resizing buffer to %d bytes%s%s",
|
|
size,
|
|
what ? " for " : "",
|
|
what ? what : "");
|
|
exit(-23);
|
|
return 0;
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
char *xstrdup(const char *str) {
|
|
return strcpy(xmalloc(0, strlen(str) + 1), str);
|
|
}
|
|
|
|
void xfree(void *ptr) {
|
|
if (ptr)
|
|
free(ptr);
|
|
}
|