]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - contrib/ntp/include/ntp_malloc.h
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.git] / contrib / ntp / include / ntp_malloc.h
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>
41 void * 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 */