[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