[PATCH] dix: Fix endianess detection

Olivier Fourdan ofourdan at redhat.com
Fri Apr 10 00:46:09 PDT 2015


On 09/04/15 18:54, Adam Jackson wrote:
> On Thu, 2015-04-09 at 15:33 +0200, Olivier Fourdan wrote:
>> Make sure X_BIG_ENDIAN/X_LITTLE_ENDIAN are defined before actually using
>> them.
>>
>> Otherwise, byte order could be wrong even though endianess detection is
>> correct.
>>
>> Reported-by: Tim Waugh <twaugh at redhat.com>
>> Signed-off-by: Olivier Fourdan <ofourdan at redhat.com>
>
> I'm a little wary of this.  Xarch.h doesn't have ifdef guards arounds
> its definition of those, might be better to just include that after the
> #undef X_BYTE_ORDER.

Right. I was unsure how the pre-processor would handle something like:

#define X_BYTE_ORDER X_LITTLE_ENDIAN
#define X_LITTLE_ENDIAN 1234
#if X_BYTE_ORDER == X_LITTLE_ENDIAN
...
#endif

I was over cautious and clearly mistaken because it works, both 
X_BYTE_ORDER and X_LITTLE_ENDIAN end up with the same value even if 
X_LITTLE_ENDIAN is defined after X_BYTE_ORDER.

So, best would be to simply add the #include <X11/Xarch.h> in 
include/servermd.h where it is actually used to determine 
IMAGE_BYTE_ORDER and BITMAP_BIT_ORDER.

X11/Xarch.h comes with xproto and servermd.h already includes 
X11/Xfuncproto.h so we are not adding any new dependency here.

Will send an updated patch.

Cheers,
Olivier


More information about the xorg-devel mailing list