1999-12-09 13:01:21 +00:00
|
|
|
/*
|
|
|
|
* Define malloc and friends.
|
|
|
|
*/
|
2013-12-04 21:33:17 +00:00
|
|
|
#ifndef NTP_MALLOC_H
|
|
|
|
#define NTP_MALLOC_H
|
1999-12-09 13:01:21 +00:00
|
|
|
|
|
|
|
#ifdef HAVE_STDLIB_H
|
|
|
|
# include <stdlib.h>
|
2013-12-04 21:33:17 +00:00
|
|
|
#else
|
1999-12-09 13:01:21 +00:00
|
|
|
# ifdef HAVE_MALLOC_H
|
|
|
|
# include <malloc.h>
|
|
|
|
# endif
|
2013-12-04 21:33:17 +00:00
|
|
|
#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))
|
1999-12-09 13:01:21 +00:00
|
|
|
|
2013-12-04 21:33:17 +00:00
|
|
|
#endif /* NTP_MALLOC_H */
|