-// SPDX-FileCopyrightText: 1990-1994, Julianne Frances Haugh
-// SPDX-FileCopyrightText: 1996-1998, Marek Michałkiewicz
-// SPDX-FileCopyrightText: 2003-2006, Tomasz Kłoczko
-// SPDX-FileCopyrightText: 2008 , Nicolas François
// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#include "config.h"
#include "alloc/x/xcalloc.h"
-
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "defines.h"
-#include "shadowlog.h"
-
-
-void *
-xcalloc(size_t nmemb, size_t size)
-{
- void *p;
-
- p = calloc(nmemb, size);
- if (p == NULL)
- goto x;
-
- return p;
-
-x:
- fprintf(log_get_logfd(), _("%s: %s\n"),
- log_get_progname(), strerror(errno));
- exit(13);
-}
-// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar <alx@kernel.org>
+// SPDX-FileCopyrightText: 2023-2025, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#include "config.h"
-#include <stddef.h>
-#include <stdlib.h>
+#include "alloc/calloc.h"
+#include "exit_if_null.h"
-#include "attr.h"
-
-#define XCALLOC(n, type) \
-( \
- (type *) xcalloc(n, sizeof(type)) \
-)
-
-
-ATTR_ALLOC_SIZE(1, 2)
-ATTR_MALLOC(free)
-void *xcalloc(size_t nmemb, size_t size);
+#define XCALLOC(n, type) exit_if_null(CALLOC(n, type))
#endif // include guard
-// SPDX-FileCopyrightText: 1990-1994, Julianne Frances Haugh
-// SPDX-FileCopyrightText: 1996-1998, Marek Michałkiewicz
-// SPDX-FileCopyrightText: 2003-2006, Tomasz Kłoczko
-// SPDX-FileCopyrightText: 2008 , Nicolas François
// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#include "config.h"
#include "alloc/x/xmalloc.h"
-
-#include <stddef.h>
-
-
-extern inline void *xmallocarray(size_t nmemb, size_t size);
-// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar <alx@kernel.org>
+// SPDX-FileCopyrightText: 2023-2025, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#include "config.h"
-#include <stddef.h>
+#include "alloc/malloc.h"
+#include "exit_if_null.h"
-#include "alloc/x/xrealloc.h"
-#include "attr.h"
-
-#define XMALLOC(n, type) \
-( \
- (type *) xmallocarray(n, sizeof(type)) \
-)
-
-
-ATTR_ALLOC_SIZE(1, 2)
-ATTR_MALLOC(free)
-inline void *xmallocarray(size_t nmemb, size_t size);
-
-
-inline void *
-xmallocarray(size_t nmemb, size_t size)
-{
- return xreallocarray(NULL, nmemb, size);
-}
+#define XMALLOC(n, type) exit_if_null(MALLOC(n, type))
#endif // include guard
-// SPDX-FileCopyrightText: 1990-1994, Julianne Frances Haugh
-// SPDX-FileCopyrightText: 1996-1998, Marek Michałkiewicz
-// SPDX-FileCopyrightText: 2003-2006, Tomasz Kłoczko
-// SPDX-FileCopyrightText: 2008 , Nicolas François
// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#include "config.h"
#include "alloc/x/xrealloc.h"
-
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "alloc/reallocf.h"
-#include "defines.h"
-#include "shadowlog.h"
-
-
-void *
-xreallocarray(void *p, size_t nmemb, size_t size)
-{
- p = reallocarrayf(p, nmemb, size);
- if (p == NULL)
- goto x;
-
- return p;
-
-x:
- fprintf(log_get_logfd(), _("%s: %s\n"),
- log_get_progname(), strerror(errno));
- exit(13);
-}
-// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar <alx@kernel.org>
+// SPDX-FileCopyrightText: 2023-2025, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
-#ifndef SHADOW_INCLUDE_LIB_MALLOC_H_
-#define SHADOW_INCLUDE_LIB_MALLOC_H_
+#ifndef SHADOW_INCLUDE_LIB_ALLOC_X_XREALLOC_H_
+#define SHADOW_INCLUDE_LIB_ALLOC_X_XREALLOC_H_
#include "config.h"
-#include <assert.h>
-#include <errno.h>
-#include <stddef.h>
-#include <stdint.h>
-#include <stdlib.h>
+#include "alloc/realloc.h"
+#include "exit_if_null.h"
-#include "attr.h"
-
-#define XREALLOC(ptr, n, type) \
-( \
- _Generic(ptr, type *: (type *) xreallocarray(ptr, n, sizeof(type))) \
-)
-
-
-ATTR_ALLOC_SIZE(2, 3)
-ATTR_MALLOC(free)
-void *xreallocarray(void *p, size_t nmemb, size_t size);
+#define XREALLOC(p, n, type) exit_if_null(REALLOC(p, n, type))
#endif // include guard