|
10 | 10 | /* in case C library malloc() needs extra protection, |
11 | 11 | * allow these defines to be overridden. |
12 | 12 | */ |
13 | | -#ifndef cvector_clib_free |
14 | | -#include <stdlib.h> /* for free */ |
15 | | -#define cvector_clib_free free |
| 13 | +/* functions for allocation and deallocation need to correspond to each other, fall back to C library functions if not all are overridden */ |
| 14 | +#if !defined(cvector_clib_free) || !defined(cvector_clib_malloc) || !defined(cvector_clib_calloc) || !defined(cvector_clib_realloc) |
| 15 | +#ifdef cvector_clib_free |
| 16 | +#undef cvector_clib_free |
16 | 17 | #endif |
17 | | -#ifndef cvector_clib_malloc |
18 | | -#include <stdlib.h> /* for malloc */ |
19 | | -#define cvector_clib_malloc malloc |
| 18 | +#ifdef cvector_clib_malloc |
| 19 | +#undef cvector_clib_malloc |
20 | 20 | #endif |
21 | | -#ifndef cvector_clib_calloc |
22 | | -#include <stdlib.h> /* for calloc */ |
23 | | -#define cvector_clib_calloc calloc |
| 21 | +#ifdef cvector_clib_calloc |
| 22 | +#undef cvector_clib_calloc |
| 23 | +#endif |
| 24 | +#ifdef cvector_clib_realloc |
| 25 | +#undef cvector_clib_realloc |
24 | 26 | #endif |
25 | | -#ifndef cvector_clib_realloc |
26 | | -#include <stdlib.h> /* for realloc */ |
| 27 | +#include <stdlib.h> |
| 28 | +#define cvector_clib_free free |
| 29 | +#define cvector_clib_malloc malloc |
| 30 | +#define cvector_clib_calloc calloc |
27 | 31 | #define cvector_clib_realloc realloc |
28 | 32 | #endif |
| 33 | +/* functions independent of memory allocation */ |
29 | 34 | #ifndef cvector_clib_assert |
30 | 35 | #include <assert.h> /* for assert */ |
31 | 36 | #define cvector_clib_assert assert |
|
0 commit comments