Remove incorrect uses of __attribute__((__malloc__)).

xrealloc() is obviously incorrect, modern GCC docs even
mention realloc() as an example where this attribute
cannot be used.

liblzma's lzma_alloc() and lzma_alloc_zero() would be
correct uses most of the time but custom allocators
may use a memory pool or otherwise hold the pointer
so aliasing issues could happen in theory.

The xstrdup() case likely was correct but I removed it anyway.
Now there are no __malloc__ attributes left in the code.
The allocations aren't in hot paths so this should make
no practical difference.
This commit is contained in:
Lasse Collin 2023-09-11 18:53:31 +03:00 committed by Jia Tan
parent 589b4cba22
commit 359e5c6cb1
3 changed files with 6 additions and 6 deletions

View File

@ -35,7 +35,7 @@ lzma_version_string(void)
// Memory allocation // // Memory allocation //
/////////////////////// ///////////////////////
extern void * lzma_attribute((__malloc__)) lzma_attr_alloc_size(1) extern void * lzma_attr_alloc_size(1)
lzma_alloc(size_t size, const lzma_allocator *allocator) lzma_alloc(size_t size, const lzma_allocator *allocator)
{ {
// Some malloc() variants return NULL if called with size == 0. // Some malloc() variants return NULL if called with size == 0.
@ -53,7 +53,7 @@ lzma_alloc(size_t size, const lzma_allocator *allocator)
} }
extern void * lzma_attribute((__malloc__)) lzma_attr_alloc_size(1) extern void * lzma_attr_alloc_size(1)
lzma_alloc_zero(size_t size, const lzma_allocator *allocator) lzma_alloc_zero(size_t size, const lzma_allocator *allocator)
{ {
// Some calloc() variants return NULL if called with size == 0. // Some calloc() variants return NULL if called with size == 0.

View File

@ -298,12 +298,12 @@ struct lzma_internal_s {
/// Allocates memory /// Allocates memory
extern void *lzma_alloc(size_t size, const lzma_allocator *allocator) extern void *lzma_alloc(size_t size, const lzma_allocator *allocator)
lzma_attribute((__malloc__)) lzma_attr_alloc_size(1); lzma_attr_alloc_size(1);
/// Allocates memory and zeroes it (like calloc()). This can be faster /// Allocates memory and zeroes it (like calloc()). This can be faster
/// than lzma_alloc() + memzero() while being backward compatible with /// than lzma_alloc() + memzero() while being backward compatible with
/// custom allocators. /// custom allocators.
extern void * lzma_attribute((__malloc__)) lzma_attr_alloc_size(1) extern void * lzma_attr_alloc_size(1)
lzma_alloc_zero(size_t size, const lzma_allocator *allocator); lzma_alloc_zero(size_t size, const lzma_allocator *allocator);
/// Frees memory /// Frees memory

View File

@ -20,11 +20,11 @@
/// \brief Safe realloc() that never returns NULL /// \brief Safe realloc() that never returns NULL
extern void *xrealloc(void *ptr, size_t size) extern void *xrealloc(void *ptr, size_t size)
lzma_attribute((__malloc__)) lzma_attr_alloc_size(2); lzma_attr_alloc_size(2);
/// \brief Safe strdup() that never returns NULL /// \brief Safe strdup() that never returns NULL
extern char *xstrdup(const char *src) lzma_attribute((__malloc__)); extern char *xstrdup(const char *src);
/// \brief Fancy version of strtoull() /// \brief Fancy version of strtoull()