Merge commit '04b0f0e371ff81b682274b574fb465ba4395c09f'
authorJames Almer <jamrial@gmail.com>
Mon, 30 Oct 2017 19:08:14 +0000 (16:08 -0300)
committerJames Almer <jamrial@gmail.com>
Mon, 30 Oct 2017 19:08:14 +0000 (16:08 -0300)
* commit '04b0f0e371ff81b682274b574fb465ba4395c09f':
  mem: uninline av_malloc(z)_array()

Merged-by: James Almer <jamrial@gmail.com>
1  2 
libavutil/mem.c
libavutil/mem.h

diff --cc libavutil/mem.c
Simple merge
diff --cc libavutil/mem.h
  void *av_malloc(size_t size) av_malloc_attrib av_alloc_size(1);
  
  /**
 - * Allocate a block of size * nmemb bytes with av_malloc().
 - * @param nmemb Number of elements
 - * @param size Size of the single element
 - * @return Pointer to the allocated block, NULL if the block cannot
 - * be allocated.
 + * Allocate a memory block with alignment suitable for all memory accesses
 + * (including vectors if available on the CPU) and zero all the bytes of the
 + * block.
 + *
 + * @param size Size in bytes for the memory block to be allocated
 + * @return Pointer to the allocated block, or `NULL` if it cannot be allocated
 + * @see av_malloc()
 + */
 +void *av_mallocz(size_t size) av_malloc_attrib av_alloc_size(1);
 +
 +/**
 + * Allocate a memory block for an array with av_malloc().
 + *
 + * The allocated memory will have size `size * nmemb` bytes.
 + *
 + * @param nmemb Number of element
 + * @param size  Size of a single element
 + * @return Pointer to the allocated block, or `NULL` if the block cannot
 + *         be allocated
   * @see av_malloc()
   */
- av_alloc_size(1, 2) static inline void *av_malloc_array(size_t nmemb, size_t size)
- {
-     if (!size || nmemb >= INT_MAX / size)
-         return NULL;
-     return av_malloc(nmemb * size);
- }
+ av_alloc_size(1, 2) void *av_malloc_array(size_t nmemb, size_t size);
  
  /**
 - * 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.
 - * @param ptr Pointer to a memory block already allocated with
 - * av_realloc() or NULL.
 + * Allocate a memory block for an array with av_mallocz().
 + *
 + * The allocated memory will have size `size * nmemb` bytes.
 + *
 + * @param nmemb Number of elements
 + * @param size  Size of the single element
 + * @return Pointer to the allocated block, or `NULL` if the block cannot
 + *         be allocated
 + *
 + * @see av_mallocz()
 + * @see av_malloc_array()
 + */
- av_alloc_size(1, 2) static inline void *av_mallocz_array(size_t nmemb, size_t size)
- {
-     if (!size || nmemb >= INT_MAX / size)
-         return NULL;
-     return av_mallocz(nmemb * size);
- }
++av_alloc_size(1, 2) void *av_mallocz_array(size_t nmemb, size_t size);
 +
 +/**
 + * Non-inlined equivalent of av_mallocz_array().
 + *
 + * Created for symmetry with the calloc() C function.
 + */
 +void *av_calloc(size_t nmemb, size_t size) av_malloc_attrib;
 +
 +/**
 + * Allocate, reallocate, or free 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`. Otherwise, expand or
 + * shrink that block of memory according to `size`.
 + *
 + * @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.
 - * @warning Pointers originating from the av_malloc() family of functions must
 - *          not be passed to av_realloc(). The former can be implemented using
 - *          memalign() (or other functions), and there is no guarantee that
 - *          pointers from such functions can be passed to realloc() at all.
 - *          The situation is undefined according to POSIX and may crash with
 - *          some libc implementations.
 + *             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
 + *
 + * @warning Unlike av_malloc(), the returned pointer is not guaranteed to be
 + *          correctly aligned.
   * @see av_fast_realloc()
 + * @see av_reallocp()
   */
  void *av_realloc(void *ptr, size_t size) av_alloc_size(2);