[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