@@ -851,26 +851,21 @@ static inline void copy_array(void *dst, const void *src, size_t n, size_t size)
851
851
* times, and it must be assignable as an lvalue.
852
852
*/
853
853
#define FLEX_ALLOC_MEM (x , flexname , buf , len ) do { \
854
- (x) = NULL; /* silence -Wuninitialized for offset calculation */ \
855
- (x ) = xalloc_flex (sizeof (* (x )), (char * )(& ((x )-> flexname )) - (char * )(x ), (buf ), (len )); \
854
+ size_t flex_array_len_ = (len); \
855
+ (x) = xcalloc(1, st_add3(sizeof(*(x)), flex_array_len_, 1)); \
856
+ memcpy((void *)(x)->flexname, (buf), flex_array_len_); \
856
857
} while (0)
857
858
#define FLEXPTR_ALLOC_MEM (x , ptrname , buf , len ) do { \
858
- (x) = xalloc_flex(sizeof(*(x)), sizeof(*(x)), (buf), (len)); \
859
+ size_t flex_array_len_ = (len); \
860
+ (x) = xcalloc(1, st_add3(sizeof(*(x)), flex_array_len_, 1)); \
861
+ memcpy((x) + 1, (buf), flex_array_len_); \
859
862
(x)->ptrname = (void *)((x)+1); \
860
863
} while(0)
861
864
#define FLEX_ALLOC_STR (x , flexname , str ) \
862
865
FLEX_ALLOC_MEM((x), flexname, (str), strlen(str))
863
866
#define FLEXPTR_ALLOC_STR (x , ptrname , str ) \
864
867
FLEXPTR_ALLOC_MEM((x), ptrname, (str), strlen(str))
865
868
866
- static inline void * xalloc_flex (size_t base_len , size_t offset ,
867
- const void * src , size_t src_len )
868
- {
869
- unsigned char * ret = xcalloc (1 , st_add3 (base_len , src_len , 1 ));
870
- memcpy (ret + offset , src , src_len );
871
- return ret ;
872
- }
873
-
874
869
static inline char * xstrdup_or_null (const char * str )
875
870
{
876
871
return str ? xstrdup (str ) : NULL ;
0 commit comments