When I build 2.4.22rc2 with gcc 3.3, I get the following warnings
vt.c:166: warning: comparison is always false due to limited range of data type
vt.c:283: warning: comparison is always false due to limited range of data type
keyboard.c:644: warning: comparison is always true due to limited range of data type
It seems an unsigned char is being compared with 256, which always returns false.
__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com
Any ideas?
__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com
On Mon, Aug 11, 2003 at 01:54:53AM -0700, Alex Davis wrote:
> When I build 2.4.22rc2 with gcc 3.3, I get the following warnings
>
>
> vt.c:166: warning: comparison is always false due to limited range of data type
> vt.c:283: warning: comparison is always false due to limited range of data type
> keyboard.c:644: warning: comparison is always true due to limited range of data type
>
> It seems an unsigned char is being compared with 256, which always returns false.
For keyboard.c, the test is :
if (value < SIZE(func_table)) {
so it's reassuring that any value is contained in the table. We could hide
the warning with a cast of value to (int).
for vt.c, it's the same concept, some bounds are enforced on some values, and
in the event they would be violated, -EINVAL would be returned. So the check,
even if useless here, has some sense. Here again, a cast could hide the
warnings, but may generate useless code.
Cheers,
Willy
Willy,
Em Seg, 2003-08-11 ?s 12:50, Willy Tarreau escreveu:
> On Mon, Aug 11, 2003 at 01:54:53AM -0700, Alex Davis wrote:
> > When I build 2.4.22rc2 with gcc 3.3, I get the following warnings
> >
> >
> > vt.c:166: warning: comparison is always false due to limited range of data type
> > vt.c:283: warning: comparison is always false due to limited range of data type
> > keyboard.c:644: warning: comparison is always true due to limited range of data type
> >
> > It seems an unsigned char is being compared with 256, which always returns false.
>
> For keyboard.c, the test is :
>
> if (value < SIZE(func_table)) {
>
> so it's reassuring that any value is contained in the table. We could hide
> the warning with a cast of value to (int).
I'm getting it in 2.6.0-test3(-mm1) too. The problem (I think) is
that the ''if'' is aways true because ''value'' never will be > than
''SIZE(func_table)''.
The cast does not solve the problem, because ''value'' have just
8 bits (unsigned char) used, in other words, with the cast
the ''if'' will continue to be true.
--
Luiz Fernando N. Capitulino
<[email protected]>
<http://www.telecentros.sp.gov.br>