[FFmpeg-devel] [PATCH] avutil/video_enc_param: fix warning

lance.lmwang at gmail.com lance.lmwang at gmail.com
Thu May 21 17:46:45 EEST 2020


On Thu, May 21, 2020 at 04:34:39PM +0200, Nicolas George wrote:
> lance.lmwang at gmail.com (12020-05-21):
> > From: Limin Wang <lance.lmwang at gmail.com>
> > 
> > warning: comparison is always false due to limited range of data type [-Wtype-limits]
> 
> > Also nb_blocks is unsigned int, so nb_blocks * sizeof(AVVideoBlockParams) may overflow,
> > so force to size_t
> 
> No it may not, the test just before prevents it.
> 
> > 
> > Signed-off-by: Limin Wang <lance.lmwang at gmail.com>
> > ---
> >  libavutil/video_enc_params.c | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> > 
> > diff --git a/libavutil/video_enc_params.c b/libavutil/video_enc_params.c
> > index c46c0f1..4a4c85f 100644
> > --- a/libavutil/video_enc_params.c
> > +++ b/libavutil/video_enc_params.c
> > @@ -33,8 +33,8 @@ AVVideoEncParams *av_video_enc_params_alloc(enum AVVideoEncParamsType type,
> >      size_t size;
> >  
> >      size = sizeof(*par);
> 
> > -    if (nb_blocks > SIZE_MAX / sizeof(AVVideoBlockParams) ||
> > +    if (nb_blocks > UINT_MAX / sizeof(AVVideoBlockParams) ||
> 
> These tests are not equivalent.
I'm not sure, Mac compile give below warning:

 warning: comparison of constant 922337203685477580 with expression of type 'unsigned int' is always false
      [-Wtautological-constant-out-of-range-compare]


> 
> > -        nb_blocks * sizeof(AVVideoBlockParams) > SIZE_MAX - size)
> > +        (size_t)nb_blocks * sizeof(AVVideoBlockParams) > SIZE_MAX - size)
> 
> The cast is unnecessary due to C's promotion rules.

Yes, It seems it's not necessary as the first test.

> 
> >          return NULL;
> >      size += sizeof(AVVideoBlockParams) * nb_blocks;
> >  
> 
> Regards,
> 
> -- 
>   Nicolas George



-- 
Thanks,
Limin Wang


More information about the ffmpeg-devel mailing list