diff --git a/os/alloc.c b/os/alloc.c new file mode 100644 index 000000000..d808b0fe8 --- /dev/null +++ b/os/alloc.c @@ -0,0 +1,60 @@ +/* SPDX-License-Identifier: MIT OR X11 + * + * Copyright © 1987, 1998 The Open Group + * Copyright © 2024 Enrico Weigelt, metux IT consult + */ +#include + +#include + +#include "os.h" + +void * +XNFalloc(unsigned long amount) +{ + void *ptr = malloc(amount); + + if (!ptr) + FatalError("Out of memory"); + return ptr; +} + +/* The original XNFcalloc was used with the xnfcalloc macro which multiplied + * the arguments at the call site without allowing calloc to check for overflow. + * XNFcallocarray was added to fix that without breaking ABI. + */ +void * +XNFcalloc(unsigned long amount) +{ + return XNFcallocarray(1, amount); +} + +void * +XNFcallocarray(size_t nmemb, size_t size) +{ + void *ret = calloc(nmemb, size); + + if (!ret) + FatalError("XNFcalloc: Out of memory"); + return ret; +} + +void * +XNFrealloc(void *ptr, unsigned long amount) +{ + void *ret = realloc(ptr, amount); + + if (!ret) + FatalError("XNFrealloc: Out of memory"); + return ret; +} + +void * +XNFreallocarray(void *ptr, size_t nmemb, size_t size) +{ + void *ret = reallocarray(ptr, nmemb, size); + + if (!ret) + FatalError("XNFreallocarray: Out of memory"); + return ret; +} diff --git a/os/meson.build b/os/meson.build index a6cf8a444..00375d17c 100644 --- a/os/meson.build +++ b/os/meson.build @@ -1,6 +1,7 @@ srcs_os = [ 'WaitFor.c', 'access.c', + 'alloc.c', 'auth.c', 'backtrace.c', 'client.c', diff --git a/os/utils.c b/os/utils.c index 8287a66f5..467fc3b91 100644 --- a/os/utils.c +++ b/os/utils.c @@ -1131,56 +1131,6 @@ set_font_authorizations(char **authorizations, int *authlen, void *client) #endif /* TCPCONN */ } -void * -XNFalloc(unsigned long amount) -{ - void *ptr = malloc(amount); - - if (!ptr) - FatalError("Out of memory"); - return ptr; -} - -/* The original XNFcalloc was used with the xnfcalloc macro which multiplied - * the arguments at the call site without allowing calloc to check for overflow. - * XNFcallocarray was added to fix that without breaking ABI. - */ -void * -XNFcalloc(unsigned long amount) -{ - return XNFcallocarray(1, amount); -} - -void * -XNFcallocarray(size_t nmemb, size_t size) -{ - void *ret = calloc(nmemb, size); - - if (!ret) - FatalError("XNFcalloc: Out of memory"); - return ret; -} - -void * -XNFrealloc(void *ptr, unsigned long amount) -{ - void *ret = realloc(ptr, amount); - - if (!ret) - FatalError("XNFrealloc: Out of memory"); - return ret; -} - -void * -XNFreallocarray(void *ptr, size_t nmemb, size_t size) -{ - void *ret = reallocarray(ptr, nmemb, size); - - if (!ret) - FatalError("XNFreallocarray: Out of memory"); - return ret; -} - char * Xstrdup(const char *s) {