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