From 31aafdac2404c5e01b21e53255db3fb5ed53c7c9 Mon Sep 17 00:00:00 2001 From: James Almer Date: Sat, 19 Oct 2019 11:58:35 -0300 Subject: [PATCH] avformat/options: don't call avformat_free_context() within avformat_alloc_context() avformat_free_context() expects AVFormatContext->internal to not be NULL. Reviewed-by: Andreas Rheinhardt Signed-off-by: James Almer --- libavformat/options.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/libavformat/options.c b/libavformat/options.c index c188c23506..e14510504f 100644 --- a/libavformat/options.c +++ b/libavformat/options.c @@ -144,15 +144,17 @@ static void avformat_get_context_defaults(AVFormatContext *s) AVFormatContext *avformat_alloc_context(void) { AVFormatContext *ic; + AVFormatInternal *internal; ic = av_malloc(sizeof(AVFormatContext)); if (!ic) return ic; - avformat_get_context_defaults(ic); - ic->internal = av_mallocz(sizeof(*ic->internal)); - if (!ic->internal) { - avformat_free_context(ic); + internal = av_mallocz(sizeof(*internal)); + if (!internal) { + av_free(ic); return NULL; } + avformat_get_context_defaults(ic); + ic->internal = internal; ic->internal->offset = AV_NOPTS_VALUE; ic->internal->raw_packet_buffer_remaining_size = RAW_PACKET_BUFFER_SIZE; ic->internal->shortest_end = AV_NOPTS_VALUE;