On 08/09/13 23:28, Diego Biurrun wrote: > On Sun, Sep 08, 2013 at 08:09:17AM +0200, Luca Barbato wrote: >> Passing a pointer provided by memalign, posix_memalign or aligned_alloc to >> realloc is known to cause subtle or not so subtle errors resulting in >> possible crashes in most libc (the openbsd and windows ones are the >> exceptions). > > libcs > >> The Libav code does not mix av_malloc and av_realloc functions so does > > so it > >> --- a/libavutil/mem.h >> +++ b/libavutil/mem.h >> @@ -100,14 +100,14 @@ av_alloc_size(1, 2) static inline void >> *av_malloc_array(size_t nmemb, size_t siz >> * Allocate or reallocate a block of memory. >> * If ptr is NULL and size > 0, allocate a new block. If >> * size is zero, free the memory block pointed to by ptr. >> + * @note Pointers provided by av_malloc family of functions cannot be >> + * passed to av_realloc(). >> * @param ptr Pointer to a memory block already allocated with >> * av_realloc() or NULL. >> * @param size Size in bytes of the memory block to be allocated or >> * reallocated. >> * @return Pointer to a newly-reallocated block or NULL if the block >> * cannot be reallocated or the function is used to free the memory block. >> - * @note av_realloc() is not guaranteed to maintain the alignment of >> - * pointers originating from the av_malloc() family of functions. >> * @see av_fast_realloc() >> */ > > This brings back the previous unclear wording. You can very much pass > pointers from av_malloc() to av_realloc() - it's just that the result
As you can do 1/0 or ((char *)NULL)[-1] with equally surprising results. There isn't much unclear, I can use MUST (as in rfc-speak) but that's the substance. lu _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
