xref: /netbsd-src/external/bsd/ntp/dist/include/ntp_malloc.h (revision cdfa2a7ef92791ba9db70a584a1d904730e6fb46)
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