[FFmpeg-cvslog] Merge commit '04b0f0e371ff81b682274b574fb465ba4395c09f'
James Almer
git at videolan.org
Mon Oct 30 21:35:41 EET 2017
ffmpeg | branch: master | James Almer <jamrial at gmail.com> | Mon Oct 30 16:08:14 2017 -0300| [4959f18a8e11ad7d3529b1c4fc429f1b6b76ad7c] | committer: James Almer
Merge commit '04b0f0e371ff81b682274b574fb465ba4395c09f'
* commit '04b0f0e371ff81b682274b574fb465ba4395c09f':
mem: uninline av_malloc(z)_array()
Merged-by: James Almer <jamrial at gmail.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=4959f18a8e11ad7d3529b1c4fc429f1b6b76ad7c
---
libavutil/mem.c | 14 ++++++++++++++
libavutil/mem.h | 14 ++------------
2 files changed, 16 insertions(+), 12 deletions(-)
diff --git a/libavutil/mem.c b/libavutil/mem.c
index 36740f1154..6ad409daf4 100644
--- a/libavutil/mem.c
+++ b/libavutil/mem.c
@@ -181,6 +181,20 @@ int av_reallocp(void *ptr, size_t size)
return 0;
}
+void *av_malloc_array(size_t nmemb, size_t size)
+{
+ if (!size || nmemb >= INT_MAX / size)
+ return NULL;
+ return av_malloc(nmemb * size);
+}
+
+void *av_mallocz_array(size_t nmemb, size_t size)
+{
+ if (!size || nmemb >= INT_MAX / size)
+ return NULL;
+ return av_mallocz(nmemb * size);
+}
+
void *av_realloc_array(void *ptr, size_t nmemb, size_t size)
{
if (!size || nmemb >= INT_MAX / size)
diff --git a/libavutil/mem.h b/libavutil/mem.h
index 527cd03191..49d4b1f2db 100644
--- a/libavutil/mem.h
+++ b/libavutil/mem.h
@@ -206,12 +206,7 @@ void *av_mallocz(size_t size) av_malloc_attrib av_alloc_size(1);
* 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 a memory block for an array with av_mallocz().
@@ -226,12 +221,7 @@ av_alloc_size(1, 2) static inline void *av_malloc_array(size_t nmemb, size_t siz
* @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().
======================================================================
diff --cc libavutil/mem.h
index 527cd03191,a03ba2f528..49d4b1f2db
--- a/libavutil/mem.h
+++ b/libavutil/mem.h
@@@ -185,80 -82,32 +185,70 @@@
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);
More information about the ffmpeg-cvslog
mailing list