From 5acbe8fae1241c06f23754a9eb192a8164a7d738 Mon Sep 17 00:00:00 2001 From: Steffen Date: Sun, 6 Apr 2025 18:04:00 +0200 Subject: [PATCH] ensure harmonized memory management functions Allocation, reallocation, and deallocation functions must not belong to different libraries. Ensure that either all or none of them are overridden. --- cvector.h | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/cvector.h b/cvector.h index 02a26be..dcf2129 100644 --- a/cvector.h +++ b/cvector.h @@ -10,22 +10,27 @@ /* in case C library malloc() needs extra protection, * allow these defines to be overridden. */ -#ifndef cvector_clib_free -#include /* for free */ -#define cvector_clib_free free +/* functions for allocation and deallocation need to correspond to each other, fall back to C library functions if not all are overridden */ +#if !defined(cvector_clib_free) || !defined(cvector_clib_malloc) || !defined(cvector_clib_calloc) || !defined(cvector_clib_realloc) +#ifdef cvector_clib_free +#undef cvector_clib_free #endif -#ifndef cvector_clib_malloc -#include /* for malloc */ -#define cvector_clib_malloc malloc +#ifdef cvector_clib_malloc +#undef cvector_clib_malloc #endif -#ifndef cvector_clib_calloc -#include /* for calloc */ -#define cvector_clib_calloc calloc +#ifdef cvector_clib_calloc +#undef cvector_clib_calloc +#endif +#ifdef cvector_clib_realloc +#undef cvector_clib_realloc #endif -#ifndef cvector_clib_realloc -#include /* for realloc */ +#include +#define cvector_clib_free free +#define cvector_clib_malloc malloc +#define cvector_clib_calloc calloc #define cvector_clib_realloc realloc #endif +/* functions independent of memory allocation */ #ifndef cvector_clib_assert #include /* for assert */ #define cvector_clib_assert assert