avcodec/utils: Avoid undefined void casts in ff_fast_malloc()

based on code from libavutil/mem.c

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
pull/140/head
Michael Niedermayer 10 years ago
parent b3415e4c5f
commit 59a07df067
  1. 13
      libavcodec/utils.c

@ -124,13 +124,16 @@ static void *avformat_mutex;
static inline int ff_fast_malloc(void *ptr, unsigned int *size, size_t min_size, int zero_realloc) static inline int ff_fast_malloc(void *ptr, unsigned int *size, size_t min_size, int zero_realloc)
{ {
void **p = ptr; void *val;
if (min_size <= *size && *p)
memcpy(&val, ptr, sizeof(val));
if (min_size <= *size && val)
return 0; return 0;
min_size = FFMAX(min_size + min_size / 16 + 32, min_size); min_size = FFMAX(min_size + min_size / 16 + 32, min_size);
av_free(*p); av_freep(ptr);
*p = zero_realloc ? av_mallocz(min_size) : av_malloc(min_size); val = zero_realloc ? av_mallocz(min_size) : av_malloc(min_size);
if (!*p) memcpy(ptr, &val, sizeof(val));
if (!val)
min_size = 0; min_size = 0;
*size = min_size; *size = min_size;
return 1; return 1;

Loading…
Cancel
Save