[FFmpeg-devel] [PATCH 1/4] avformat/mux: call deinit if write_header fails
Marton Balint
cus at passwd.hu
Mon Jun 13 22:49:48 CEST 2016
On Sat, 11 Jun 2016, Marton Balint wrote:
> Docs clearly states that av_write_trailer should only be called if
> avformat_write_header was successful, therefore we have to deinit if we return
> failure.
>
> Signed-off-by: Marton Balint <cus at passwd.hu>
> ---
> libavformat/mux.c | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/libavformat/mux.c b/libavformat/mux.c
> index 91388e3..bef230f 100644
> --- a/libavformat/mux.c
> +++ b/libavformat/mux.c
> @@ -485,14 +485,14 @@ int avformat_write_header(AVFormatContext *s, AVDictionary **options)
> if (ret >= 0 && s->pb && s->pb->error < 0)
> ret = s->pb->error;
> if (ret < 0)
> - return ret;
> + goto fail;
> if (s->flush_packets && s->pb && s->pb->error >= 0 && s->flags & AVFMT_FLAG_FLUSH_PACKETS)
> avio_flush(s->pb);
> s->internal->header_written = 1;
> }
>
> if ((ret = init_pts(s)) < 0)
> - return ret;
> + goto fail;
>
> if (s->avoid_negative_ts < 0) {
> av_assert2(s->avoid_negative_ts == AVFMT_AVOID_NEG_TS_AUTO);
> @@ -503,6 +503,11 @@ int avformat_write_header(AVFormatContext *s, AVDictionary **options)
> }
>
> return 0;
> +
> +fail:
> + if (s->oformat->deinit)
> + s->oformat->deinit(s);
> + return ret;
> }
I have applied this as well, as Rodger sent a similar patch to the list
and that was approved.
Regards,
Marton
More information about the ffmpeg-devel
mailing list