[FFmpeg-devel] [PATCH] hls: fix leaking avio_opts on hls_read_header error
Andreas Cadhalpun
andreas.cadhalpun at googlemail.com
Mon Nov 7 01:11:25 EET 2016
Use the hls_close function to reduce code duplication.
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun at googlemail.com>
---
libavformat/hls.c | 30 ++++++++++++++----------------
1 file changed, 14 insertions(+), 16 deletions(-)
diff --git a/libavformat/hls.c b/libavformat/hls.c
index 2bf86fa..3ae3c7c 100644
--- a/libavformat/hls.c
+++ b/libavformat/hls.c
@@ -1593,6 +1593,19 @@ static void update_noheader_flag(AVFormatContext *s)
s->ctx_flags &= ~AVFMTCTX_NOHEADER;
}
+static int hls_close(AVFormatContext *s)
+{
+ HLSContext *c = s->priv_data;
+
+ free_playlist_list(c);
+ free_variant_list(c);
+ free_rendition_list(c);
+
+ av_dict_free(&c->avio_opts);
+
+ return 0;
+}
+
static int hls_read_header(AVFormatContext *s)
{
void *u = (s->flags & AVFMT_FLAG_CUSTOM_IO) ? NULL : s->pb;
@@ -1794,9 +1807,7 @@ static int hls_read_header(AVFormatContext *s)
return 0;
fail:
- free_playlist_list(c);
- free_variant_list(c);
- free_rendition_list(c);
+ hls_close(s);
return ret;
}
@@ -2013,19 +2024,6 @@ static int hls_read_packet(AVFormatContext *s, AVPacket *pkt)
return AVERROR_EOF;
}
-static int hls_close(AVFormatContext *s)
-{
- HLSContext *c = s->priv_data;
-
- free_playlist_list(c);
- free_variant_list(c);
- free_rendition_list(c);
-
- av_dict_free(&c->avio_opts);
-
- return 0;
-}
-
static int hls_read_seek(AVFormatContext *s, int stream_index,
int64_t timestamp, int flags)
{
--
2.10.2
More information about the ffmpeg-devel
mailing list