> Date: Thu, 10 Oct 2024 12:33:45 +0200
> From: Patrice Dumas <[email protected]>
> 
> Hello,
> 
> I get this warning:
> In file included from ../../info/doc.h:59,
>                  from ../../info/infokey.c:21:
> ../../info/infokey.c: In function ‘compile’:
> ../../info/infomap.h:105:29: warning: comparison is always true due to 
> limited range of data type [-Wtype-limits]
>   105 | #define KEYMAP_META(k) ((k) < KEYMAP_META_BASE ? (k) + 
> KEYMAP_META_BASE : (k))
>       |                             ^
> ../../info/infokey.c:223:44: note: in expansion of macro ‘KEYMAP_META’
>   223 |                       seq[slen++] = meta ? KEYMAP_META(c) : (c); \
>       |                                            ^~~~~~~~~~~
> ../../info/infokey.c:380:21: note: in expansion of macro ‘To_seq’
>   380 |                     To_seq (oval);
>       |                     ^~~~~~

This is because 'oval' is declared as 'char':

  char oval = 0;

So therefore this part in KEYMAP_META:

  #define KEYMAP_META(k) ((k) < KEYMAP_META_BASE ? (k) + KEYMAP_META_BASE : (k))
                          ^^^^^^^^^^^^^^^^^^^^^^

is always true, because KEYMAP_META_BASE is 271, and a 'char' variable
cannot be more than 255 (if it's unsigned; otherwise it cannot be more
than 127).

I think we should declare 'oval' as 'int' instead.

Reply via email to