Commit 0f9b2982 authored by Linjie Fu's avatar Linjie Fu Committed by Mark Thompson

avcodec/vaapi: free slice_buffers when decoding failed

If vaEndPicture() failed in ff_vaapi_decode_issue(), free
the pic->slice_buffers.

Fixes the memory leak issue in ticket #7385
Signed-off-by: 's avatarLinjie Fu <linjie.fu@intel.com>
Signed-off-by: 's avatarMark Thompson <sw@jkqxz.net>
parent d5451a9b
...@@ -200,12 +200,8 @@ int ff_vaapi_decode_issue(AVCodecContext *avctx, ...@@ -200,12 +200,8 @@ int ff_vaapi_decode_issue(AVCodecContext *avctx,
AV_VAAPI_DRIVER_QUIRK_RENDER_PARAM_BUFFERS) AV_VAAPI_DRIVER_QUIRK_RENDER_PARAM_BUFFERS)
ff_vaapi_decode_destroy_buffers(avctx, pic); ff_vaapi_decode_destroy_buffers(avctx, pic);
pic->nb_param_buffers = 0; err = 0;
pic->nb_slices = 0; goto exit;
pic->slices_allocated = 0;
av_freep(&pic->slice_buffers);
return 0;
fail_with_picture: fail_with_picture:
vas = vaEndPicture(ctx->hwctx->display, ctx->va_context); vas = vaEndPicture(ctx->hwctx->display, ctx->va_context);
...@@ -216,6 +212,12 @@ fail_with_picture: ...@@ -216,6 +212,12 @@ fail_with_picture:
fail: fail:
ff_vaapi_decode_destroy_buffers(avctx, pic); ff_vaapi_decode_destroy_buffers(avctx, pic);
fail_at_end: fail_at_end:
exit:
pic->nb_param_buffers = 0;
pic->nb_slices = 0;
pic->slices_allocated = 0;
av_freep(&pic->slice_buffers);
return err; return err;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment