[FFmpeg-cvslog] avformat/options: don't call avformat_free_context() within avformat_alloc_context()

James Almer git at videolan.org
Sun Oct 20 03:35:03 EEST 2019


ffmpeg | branch: master | James Almer <jamrial at gmail.com> | Sat Oct 19 11:58:35 2019 -0300| [31aafdac2404c5e01b21e53255db3fb5ed53c7c9] | committer: James Almer

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 <andreas.rheinhardt at gmail.com>
Signed-off-by: James Almer <jamrial at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=31aafdac2404c5e01b21e53255db3fb5ed53c7c9
---

 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;



More information about the ffmpeg-cvslog mailing list