[FFmpeg-devel] [PATCH] avutil/frame: Assert that width/height/channels is 0 for the destination of av_frame*_ref()

Michael Niedermayer michael at niedermayer.cc
Wed Mar 9 12:57:58 CET 2016


On Wed, Mar 09, 2016 at 10:27:50AM +0100, Clément Bœsch wrote:
> 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.

locally changed

thx

[...]

-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Asymptotically faster algorithms should always be preferred if you have
asymptotical amounts of data
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20160309/8c09a2b9/attachment.sig>


More information about the ffmpeg-devel mailing list