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