ntp_malloc.h revision 1.1.1.2.16.1 1 /* $NetBSD: ntp_malloc.h,v 1.1.1.2.16.1 2014/12/25 02:13:01 snj 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