33 #ifndef FLAC__SHARE__ALLOC_H 34 #define FLAC__SHARE__ALLOC_H 55 # define SIZE_T_MAX 0xffffffffffffffffui64 57 # define SIZE_T_MAX 0xffffffff 63 # define SIZE_MAX SIZE_T_MAX 69 static inline void *safe_malloc_(
size_t size)
77 static inline void *safe_calloc_(
size_t nmemb,
size_t size)
81 return calloc(nmemb, size);
86 static inline void *safe_malloc_add_2op_(
size_t size1,
size_t size2)
91 return safe_malloc_(size2);
94 static inline void *safe_malloc_add_3op_(
size_t size1,
size_t size2,
size_t size3)
102 return safe_malloc_(size3);
105 static inline void *safe_malloc_add_4op_(
size_t size1,
size_t size2,
size_t size3,
size_t size4)
116 return safe_malloc_(size4);
121 static inline void *safe_malloc_mul_3op_(
size_t size1,
size_t size2,
size_t size3)
123 if(!size1 || !size2 || !size3)
130 return malloc(size1*size3);
134 static inline void *safe_malloc_mul2add_(
size_t size1,
size_t size2,
size_t size3)
137 return safe_malloc_(size3);
140 return safe_malloc_add_2op_(size1*size2, size3);
144 static inline void *safe_malloc_muladd2_(
size_t size1,
size_t size2,
size_t size3)
146 if(!size1 || (!size2 && !size3))
153 return malloc(size1*size2);
156 static inline void *safe_realloc_add_2op_(
void *ptr,
size_t size1,
size_t size2)
161 return realloc(ptr, size2);
164 static inline void *safe_realloc_add_3op_(
void *ptr,
size_t size1,
size_t size2,
size_t size3)
172 return realloc(ptr, size3);
175 static inline void *safe_realloc_add_4op_(
void *ptr,
size_t size1,
size_t size2,
size_t size3,
size_t size4)
186 return realloc(ptr, size4);
189 static inline void *safe_realloc_mul_2op_(
void *ptr,
size_t size1,
size_t size2)
192 return realloc(ptr, 0);
195 return realloc(ptr, size1*size2);
199 static inline void *safe_realloc_muladd2_(
void *ptr,
size_t size1,
size_t size2,
size_t size3)
201 if(!size1 || (!size2 && !size3))
202 return realloc(ptr, 0);
206 return safe_realloc_mul_2op_(ptr, size1, size2);
#define SIZE_MAX
Definition: alloc.h:63
void * safe_malloc_mul_2op_(size_t size1, size_t size2)