Anders Johansson <[EMAIL PROTECTED]> [Mon, 12 Sep 2005 19:33:18 +0200]:

>I would prefer to know why it can't be built with both on x86_64 when
>it can on x86. It seems like a bug to me.

You could say it is! The problem is, that ncurses defines its chtype 
like so:

#ifdef _LP64 /* long int and pointer are 64bit (e.g. axp or x86-64) */
typedef unsigned int chtype;
#else
typedef unsigned long chtype;
#endif

And then has

extern chtype acs_map[];

Now slang 1.4.9 has in slang.h:

typedef unsigned long SLtt_Char_Type;

extern SLtt_Char_Type SLcurses_Acs_Map [128];
#define acs_map SLcurses_Acs_Map

So SLtt_Char_Type is 32 bit on i386 but 64 bit on x86-64, whereas in
ncurses it's always 32 bit. That's why it works on i386 but not on
x86-64. The fix is simple, just declare SLtt_Char_type like ncurses
does, i.e.:

#ifdef _LP64
typedef unsigned int SLtt_Char_Type;
#else
typedef unsigned long SLtt_Char_Type;
#endif

Of cause you'll have to rebuild the slang package and all those packages
depending on slang, as the ABI changes.

That's basically the same change I've proposed for our slang package
(I'll be away  long holiday).

Philipp


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to