X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Feealloc.h;h=92b13c9e763bdde77c4fc4e72e3d6e81f65a5def;hb=e7086a9a301ffcfef17edbcba9e7c0312c33f7a8;hp=3dd7009940cb4a8b2a6e3b1d0706b47f9a11c24d;hpb=f64a5d6252a22e5ec3c050f9f49b4d591ec82e78;p=gnulib.git diff --git a/lib/eealloc.h b/lib/eealloc.h index 3dd700994..92b13c9e7 100644 --- a/lib/eealloc.h +++ b/lib/eealloc.h @@ -1,5 +1,5 @@ /* Memory allocation with expensive empty allocations. - Copyright (C) 2003, 2008 Free Software Foundation, Inc. + Copyright (C) 2003, 2008, 2010-2013 Free Software Foundation, Inc. Written by Bruno Haible , 2003, based on prior work by Jim Meyering. @@ -31,13 +31,26 @@ #include +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif +_GL_INLINE_HEADER_BEGIN +#ifndef EEALLOC_INLINE +# define EEALLOC_INLINE _GL_INLINE +#endif + #if MALLOC_0_IS_NONNULL # define eemalloc malloc #else # if __GNUC__ >= 3 -static inline void *eemalloc (size_t n) __attribute__ ((__malloc__)); +EEALLOC_INLINE void *eemalloc (size_t n) + __attribute__ ((__malloc__)) +# if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) + __attribute__ ((__alloc_size__ (1))) +# endif + ; # endif -static inline void * +EEALLOC_INLINE void * eemalloc (size_t n) { /* If n is zero, allocate a 1-byte block. */ @@ -50,7 +63,11 @@ eemalloc (size_t n) #if REALLOC_0_IS_NONNULL # define eerealloc realloc #else -static inline void * +# if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) +EEALLOC_INLINE void *eerealloc (void *p, size_t n) + __attribute__ ((__alloc_size__ (2))); +# endif +EEALLOC_INLINE void * eerealloc (void *p, size_t n) { /* If n is zero, allocate or keep a 1-byte block. */ @@ -67,4 +84,6 @@ eerealloc (void *p, size_t n) eenrealloc (void *p, size_t n, size_t s) - like eerealloc (p, n * s) If this would be useful in your application. please speak up. */ +_GL_INLINE_HEADER_END + #endif /* _EEALLOC_H */