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.

Attachment: signature.asc
Description: PGP signature

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to