Am 02.11.2011 14:15, schrieb Chase Douglas: > On 11/02/2011 07:29 AM, walter harms wrote: >> >> >> Am 02.11.2011 00:52, schrieb Peter Hutterer: >>> Introduced in xf86-input-evdev-2.6.0-26-g4969389 >>> >>> Signed-off-by: Peter Hutterer <[email protected]> >>> --- >>> Cutting long to int for the return value loses us some values, notably in >>> the ABS_MT ranges. >>> >>> src/evdev.c | 2 +- >>> 1 files changed, 1 insertions(+), 1 deletions(-) >>> >>> diff --git a/src/evdev.c b/src/evdev.c >>> index f593df0..6ab1a18 100644 >>> --- a/src/evdev.c >>> +++ b/src/evdev.c >>> @@ -190,7 +190,7 @@ static size_t EvdevCountBits(unsigned long *array, >>> size_t nlongs) >>> >>> static inline int EvdevBitIsSet(const unsigned long *array, int bit) >>> { >>> - return array[bit / LONG_BITS] & (1LL << (bit % LONG_BITS)); >>> + return !!(array[bit / LONG_BITS] & (1LL << (bit % LONG_BITS))); >>> } >>> >>> static inline void EvdevSetBit(unsigned long *array, int bit) >> >> hi, >> i have never seen that !! notation. perhaps (array == 0) would be more >> readable and >> not suprise to much people ? > > I would like to echo this. I actually don't know what the '!!' does > here. Since this is a one-off issue, can you add a comment to explain > what it is doing? >
IMHO the following happens: The first ! translates 0 (type long) into !0 (type int) and translates !0 (type long) into 0 (type int) Now you have int but the logic is reversed, so you need a second ! re, wh _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
