[PATCH evdev] Don't crop long value from EvdevBitIsSet.

Chase Douglas chase.douglas at canonical.com
Wed Nov 2 06:15:35 PDT 2011


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 <peter.hutterer at who-t.net>
>> ---
>> 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?

-- Chase


More information about the xorg-devel mailing list