diff options
Diffstat (limited to 'include/ntp_malloc.h')
-rw-r--r-- | include/ntp_malloc.h | 60 |
1 files changed, 51 insertions, 9 deletions
diff --git a/include/ntp_malloc.h b/include/ntp_malloc.h index 099c83effe903..4cde62e1a7a5d 100644 --- a/include/ntp_malloc.h +++ b/include/ntp_malloc.h @@ -1,19 +1,61 @@ /* * Define malloc and friends. */ -#ifndef _ntp_malloc_h -#define _ntp_malloc_h - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif +#ifndef NTP_MALLOC_H +#define NTP_MALLOC_H #ifdef HAVE_STDLIB_H # include <stdlib.h> -#else /* HAVE_STDLIB_H */ +#else # ifdef HAVE_MALLOC_H # include <malloc.h> # endif -#endif /* HAVE_STDLIB_H */ +#endif + +/* + * Deal with platform differences declaring alloca() + * This comes nearly verbatim from: + * + * http://www.gnu.org/software/autoconf/manual/autoconf.html#Particular-Functions + * + * The only modifications were to remove C++ support and guard against + * redefining alloca. + */ +#ifdef HAVE_ALLOCA_H +# include <alloca.h> +#elif defined __GNUC__ +# ifndef alloca +# define alloca __builtin_alloca +# endif +#elif defined _AIX +# ifndef alloca +# define alloca __alloca +# endif +#elif defined _MSC_VER +# include <malloc.h> +# ifndef alloca +# define alloca _alloca +# endif +#else +# include <stddef.h> +void * alloca(size_t); +#endif + +#ifdef EREALLOC_IMPL +# define EREALLOC_CALLSITE /* preserve __FILE__ and __LINE__ */ +#else +# define EREALLOC_IMPL(ptr, newsz, filenm, loc) \ + realloc(ptr, (newsz)) +#endif + +#ifdef HAVE_STRINGS_H +# include <strings.h> +# define zero_mem(p, s) bzero(p, s) +#endif + +#ifndef zero_mem +# define zero_mem(p, s) memset(p, 0, s) +#endif +#define ZERO(var) zero_mem(&(var), sizeof(var)) -#endif /* _ntp_malloc_h */ +#endif /* NTP_MALLOC_H */ |