[PATCH] hidclass.sys: fixed copy/paste error (Coverity)

Ken Thomases ken at codeweavers.com
Sat Oct 3 04:01:58 CDT 2015


On Oct 3, 2015, at 2:52 AM, Marcus Meissner <marcus at jet.franken.de> wrote:
> 
> 1325460 Identical code for different branches
> 
> Signed-off-by: Marcus Meissner <marcus at jet.franken.de>
> ---
> dlls/hidclass.sys/descriptor.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/dlls/hidclass.sys/descriptor.c b/dlls/hidclass.sys/descriptor.c
> index 6f8e45e..35057f1 100644
> --- a/dlls/hidclass.sys/descriptor.c
> +++ b/dlls/hidclass.sys/descriptor.c
> @@ -414,7 +414,7 @@ void parse_io_feature(unsigned int bSize, int itemVal, int bTag, unsigned int *f
>         if ((itemVal & INPUT_ARRAY) == 0)
>             feature->isArray= TRUE;
>         else
> -            feature->isArray= TRUE; /* Var */
> +            feature->isArray= FALSE; /* Var */

Hmm.  First, doesn't that logic seem backward?  You're now setting isArray to true only if itemVal does NOT contain INPUT_ARRAY.

And wouldn't it be better to just replace that whole if statement by:

	 feature->isArray = (itemVal & INPUT_ARRAY) != 0;

?

(For what it's worth, I started to suggest the style refactoring first and that's what made it so obvious that the logic was wrong.  The power of good style to improve comprehension!)

>         if ((itemVal & INPUT_ABS) == 0)
>             feature->IsAbsolute = TRUE;
>         else

The rest of this function looks like it's riddled with similar backward logic.  :(

-Ken




More information about the wine-devel mailing list