dinput: Count should not be 0-based.

Vitaliy Margolen wine-devel at kievinfo.com
Sat Aug 25 14:23:34 CDT 2007


Paul Vriens wrote:
> Vitaliy Margolen wrote:
>> Fixes bug 9439.
>> ---
>>  dlls/dinput/joystick_linux.c |    7 ++++---
>>  1 files changed, 4 insertions(+), 3 deletions(-)
>>
>>
>> ------------------------------------------------------------------------
>>
>>
> Hi Vitaliy,
> 
> doesn't this patch leave it 0-based?
> 
>      if (joystick_devices_count != -1) return joystick_devices_count;
> 
> +    joystick_devices_count = 0;
>      for (i = 0; i < MAX_JOYSTICKS; i++)
>      {
>          CHAR device_name[MAX_PATH], *str;
> @@ -154,7 +155,7 @@ static INT find_joystick_devices(void)
>          if (!(str = HeapAlloc(GetProcessHeap(), 0, len))) break;
>          memcpy(str, device_name, len);
> 
> -        joystick_devices[++joystick_devices_count] = str;
> +        joystick_devices[joystick_devices_count++] = str;
>      }
> 
> AFAIK this doesn't change anything. Before it was:
> 
> joystick_devices_count = -1
> ++joystick_devices_count -> 0 (for the first entry)
> 
> now:
> 
> joystick_devices_count = 0
> joystick_devices_count++ -> 0 (for the first entry)
> 

I didn't say "index", I said "count" <g>. Count should never be "0-based" as
in "0" means "count of one". Index should be 0-based, as in "0" means first.

If the count is -1 then it haven't been initialized yet. If it's 0, then
there are no devices found. 1+ one or more devices have been found.

Where it does mater is in joydev_create_device[A|W], where I assumed that
count was 1 based.

Vitaliy.




More information about the wine-devel mailing list