[FFmpeg-devel] [PATCH] avutil/frame: Assert that width/height/channels is 0 for the destination of av_frame*_ref()
Clément Bœsch
u at pkh.me
Wed Mar 9 10:27:50 CET 2016
On Tue, Mar 08, 2016 at 09:14:58PM +0100, Michael Niedermayer wrote:
> This should detect caes where these functions are called in unclean destinations
> ---
> libavutil/frame.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/libavutil/frame.c b/libavutil/frame.c
> index 5607206..dde32b0 100644
> --- a/libavutil/frame.c
> +++ b/libavutil/frame.c
> @@ -375,6 +375,9 @@ int av_frame_ref(AVFrame *dst, const AVFrame *src)
> {
> int i, ret = 0;
>
> + av_assert0(dst->width == 0 && dst->height == 0);
> + av_assert0(dst->channels == 0);
> +
> dst->format = src->format;
> dst->width = src->width;
> dst->height = src->height;
> @@ -504,6 +507,9 @@ void av_frame_unref(AVFrame *frame)
>
> void av_frame_move_ref(AVFrame *dst, AVFrame *src)
> {
> + av_assert0(dst->width == 0 && dst->height == 0);
> + av_assert0(dst->channels == 0);
> +
> *dst = *src;
> if (src->extended_data == src->data)
> dst->extended_data = dst->data;
That's a good idea but downstream developers might prefer their users to
experience a memleak that random violent aborts. I would probably make it
at assert level 1.
--
Clément B.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20160309/fe839ce9/attachment.sig>
More information about the ffmpeg-devel
mailing list