Hi! Similar reason as last mem.c patch: av_fast_realloc() can currently fail in situations where the allocation is possible and allowed. The patch does not change behaviour for the failure case, if this is wanted, it should be done separately.
Please comment, Carl Eugen
From ac69f4e8402f7c7ee6df09c0450354e2bb900e5a Mon Sep 17 00:00:00 2001 From: Carl Eugen Hoyos <ceffm...@gmail.com> Date: Mon, 1 Jan 2018 23:04:58 +0100 Subject: [PATCH] lavu/mem: Allow allocations close to max_alloc_size with av_fast_realloc(). --- libavutil/mem.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libavutil/mem.c b/libavutil/mem.c index 0729e1d..934987f 100644 --- a/libavutil/mem.c +++ b/libavutil/mem.c @@ -466,7 +466,10 @@ void *av_fast_realloc(void *ptr, unsigned int *size, size_t min_size) if (min_size <= *size) return ptr; - min_size = FFMAX(min_size + min_size / 16 + 32, min_size); + if (min_size > (max_alloc_size - 32)) + return NULL; + + min_size = FFMIN(max_alloc_size - 32, FFMAX(min_size + min_size / 16 + 32, min_size)); ptr = av_realloc(ptr, min_size); /* we could set this to the unmodified min_size but this is safer -- 1.7.10.4
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel