diff options
author | James Almer <jamrial@gmail.com> | 2019-10-21 05:38:05 +0300 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2019-10-21 23:20:58 +0300 |
commit | cecf29eb1c41b9582355450fd505d865297ae82e (patch) | |
tree | 50982c8ecdb39df849082c3ad387c78394656361 /libavformat | |
parent | aeb8b65cdf3ede71d0c0781585b2f25aaa864a47 (diff) |
avformat/oggenc: free buffered page lists while uninitializing the muxer
If the trailer is never writen, there could be buffered pages that would leak.
Reviewed-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/oggenc.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/libavformat/oggenc.c b/libavformat/oggenc.c index 06021c4f4b..d3ae07351d 100644 --- a/libavformat/oggenc.c +++ b/libavformat/oggenc.c @@ -740,6 +740,8 @@ static int ogg_write_trailer(AVFormatContext *s) static void ogg_free(AVFormatContext *s) { + OGGContext *ogg = s->priv_data; + OGGPageList *p = ogg->page_list; int i; for (i = 0; i < s->nb_streams; i++) { @@ -756,6 +758,13 @@ static void ogg_free(AVFormatContext *s) av_freep(&oggstream->header[1]); av_freep(&st->priv_data); } + + while (p) { + OGGPageList *next = p->next; + av_free(p); + p = next; + } + ogg->page_list = NULL; } #if CONFIG_OGG_MUXER |