* Chris Hofstaedtler <[email protected]> [251123 15:53]:
Reducing the system zshrc gives me:

$ zsh -f
tiksta% echo "$terminfo[smkx]"
yes
tiksta% echo "$terminfo[rmkx]"
yes
tiksta% echo $TERM
alacritty

After downgrading *ncurses* and libtinfo6 to 6.5+20250216-2:

$ zsh -f
tiksta% echo "$terminfo[smkx]"

tiksta% echo "$terminfo[rmkx]"

Looking at this further, with this C test program:

#include <curses.h>
#include <term.h>

int main(int argc, char** argv)
{
    char *name = "rmkx";
    int num;
    initscr();
    num = tigetnum(name);
    printf("tigetnum %s = %d\n", name, num);
    num = tigetflag(name);
    printf("tigetflag %s = %d\n", name, num);
    return 0;
}

I get the following results, with ncurses 6.5+20251115-2:
  tigetnum rmkx = -2
  tigetflag rmkx = 255

With the older ncurses 6.5+20250216-2:
  tigetnum rmkx = -2
  tigetflag rmkx = -1

Note that these results were obtained using the Debian binaries in an arm64 VM.

I see patch 20251101 changed the definition of ABSENT_BOOLEAN from
((signed char)-1) to
  ((NCURSES_SBOOL)-1)

While configure.in detects the possibility of using `signed char` for `NCURSES_SBOOL`, I think by default it uses `char` (without --enable-signed-char).

That seems like a problem on platforms where char is unsigned, like arm64. Note that on amd64 ("x86"), char is signed.

Chris

Reply via email to