1 /* $NetBSD: ntp_malloc.h,v 1.5 2020/05/25 20:47:19 christos Exp $ */ 2 3 /* 4 * Define malloc and friends. 5 */ 6 #ifndef NTP_MALLOC_H 7 #define NTP_MALLOC_H 8 9 #ifdef HAVE_STDLIB_H 10 # include <stdlib.h> 11 #else 12 # ifdef HAVE_MALLOC_H 13 # include <malloc.h> 14 # endif 15 #endif 16 17 /* 18 * Deal with platform differences declaring alloca() 19 * This comes nearly verbatim from: 20 * 21 * http://www.gnu.org/software/autoconf/manual/autoconf.html#Particular-Functions 22 * 23 * The only modifications were to remove C++ support and guard against 24 * redefining alloca. 25 */ 26 #ifdef HAVE_ALLOCA_H 27 # include <alloca.h> 28 #elif defined __GNUC__ 29 # ifndef alloca 30 # define alloca __builtin_alloca 31 # endif 32 #elif defined _AIX 33 # ifndef alloca 34 # define alloca __alloca 35 # endif 36 #elif defined _MSC_VER 37 # include <malloc.h> 38 # ifndef alloca 39 # define alloca _alloca 40 # endif 41 #else 42 # include <stddef.h> 43 void * alloca(size_t); 44 #endif 45 46 #ifdef EREALLOC_IMPL 47 # define EREALLOC_CALLSITE /* preserve __FILE__ and __LINE__ */ 48 #else 49 # define EREALLOC_IMPL(ptr, newsz, filenm, loc) \ 50 realloc(ptr, (newsz)) 51 #endif 52 53 #ifdef HAVE_STRINGS_H 54 # include <strings.h> 55 # define zero_mem(p, s) bzero(p, s) 56 #endif 57 58 #ifndef zero_mem 59 # define zero_mem(p, s) memset(p, 0, s) 60 #endif 61 #define ZERO(var) zero_mem(&(var), sizeof(var)) 62 63 #endif /* NTP_MALLOC_H */ 64