On 2014-03-31 20:46:30 +0200, wm4 wrote:
> ff_MPV_common_init initializes Picture.f, so call it.
> 
> s->m.mb_type must be set to NULL before ff_MPV_common_end, because it
> attempts to free it.
> ---
> Fixes a crash. Probably should be squashed with the previous commit,
> or moved before it.
> ---
>  libavcodec/svq1enc.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/libavcodec/svq1enc.c b/libavcodec/svq1enc.c
> index 23bc4fc..a9b53d1 100644
> --- a/libavcodec/svq1enc.c
> +++ b/libavcodec/svq1enc.c
> @@ -509,6 +509,9 @@ static av_cold int svq1_encode_end(AVCodecContext *avctx)
>             s->rd_total / (double)(avctx->width * avctx->height *
>                                    avctx->frame_number));
>  
> +    s->m.mb_type = NULL;
> +    ff_MPV_common_end(&s->m);
> +
>      av_freep(&s->m.me.scratchpad);
>      av_freep(&s->m.me.map);
>      av_freep(&s->m.me.score_map);
> @@ -531,6 +534,7 @@ static av_cold int svq1_encode_end(AVCodecContext *avctx)
>  static av_cold int svq1_encode_init(AVCodecContext *avctx)
>  {
>      SVQ1Context *const s = avctx->priv_data;
> +    int r;
>  
>      ff_dsputil_init(&s->dsp, avctx);
>      ff_hpeldsp_init(&s->hdsp, avctx->flags);
> @@ -554,6 +558,10 @@ static av_cold int svq1_encode_init(AVCodecContext 
> *avctx)
>  
>      s->avctx               = avctx;
>      s->m.avctx             = avctx;
> +
> +    if ((r = ff_MPV_common_init(&s->m)) < 0)
> +        return r;

leaks memory on error, add a svq1_encode_end() call

otherwise ok and it should be squashed

Janne
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to