diff options
author | Anton Khirnov <anton@khirnov.net> | 2011-06-05 13:18:17 +0200 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2011-06-05 15:01:36 +0200 |
commit | 367732832faaf1bac4ece37cf7fef8c911e16312 (patch) | |
tree | 3e3cf5d1809f898f9f25dca63b2e2f8117424bde /libavformat/utils.c | |
parent | b39b06233dfd69b941a32f29171dfb63abb23c06 (diff) | |
download | ffmpeg-367732832faaf1bac4ece37cf7fef8c911e16312.tar.gz |
lavf,lavc: free avoptions in a generic way.
It's simpler and less error-prone.
Fixes some memleaks along the way.
Diffstat (limited to 'libavformat/utils.c')
-rw-r--r-- | libavformat/utils.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/libavformat/utils.c b/libavformat/utils.c index 1050959dcb..bdc20f6d9b 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -2549,6 +2549,10 @@ void avformat_free_context(AVFormatContext *s) int i; AVStream *st; + av_opt_free(s); + if (s->iformat && s->iformat->priv_class) + av_opt_free(s->priv_data); + for(i=0;i<s->nb_streams;i++) { /* free all data in a stream component */ st = s->streams[i]; @@ -2578,7 +2582,6 @@ void avformat_free_context(AVFormatContext *s) } av_freep(&s->chapters); av_metadata_free(&s->metadata); - av_freep(&s->key); av_freep(&s->streams); av_free(s); } @@ -3094,6 +3097,8 @@ fail: av_freep(&s->streams[i]->priv_data); av_freep(&s->streams[i]->index_entries); } + if (s->iformat && s->iformat->priv_class) + av_opt_free(s->priv_data); av_freep(&s->priv_data); return ret; } |