Geert Uytterhoeven <geert@linux-m68k.org> writes: > The test for double-aligned members in dix_valuator_alloc() currently > depends on "if !defined(__i386__) && !defined(__sh__)". This covers > m68k, where it fails. > > According to the comment, the test should be limited to 64-bit > platforms only. Hence check if sizeof(long) == 8 instead. MIPS N32 needs doubles to be 8 byte aligned, while it has 32 bit longs and pointers (the CPU registers are 64 bit). libxi has a similar conditional for structure padding which prevented sigbuses of all GTK3-using programs there. Should the comment be changed, or the negative test expanded? I don't know how it could be determined without checking specific architecture names. > > Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> > --- > Untested for now > > test/input.c | 10 +++++----- > 1 files changed, 5 insertions(+), 5 deletions(-) > > diff --git a/test/input.c b/test/input.c > index be988a4..ed29bdc 100644 > --- a/test/input.c > +++ b/test/input.c > @@ -1384,11 +1384,11 @@ dix_valuator_alloc(void) > > assert(v); > assert(v->numAxes == num_axes); > -#if !defined(__i386__) && !defined(__sh__) > - /* must be double-aligned on 64 bit */ > - assert(((void *) v->axisVal - (void *) v) % sizeof(double) == 0); > - assert(((void *) v->axes - (void *) v) % sizeof(double) == 0); > -#endif > + if (sizeof(long) == 8) { > + /* must be double-aligned on 64 bit */ > + assert(((void *) v->axisVal - (void *) v) % sizeof(double) == 0); > + assert(((void *) v->axes - (void *) v) % sizeof(double) == 0); > + } > num_axes++; > }
Attachment:
pgp2tQFNBpqzE.pgp
Description: PGP signature