dlls/wintab32/context.c -- simpflication and HEADS UP!

Rolf Kalbermatter r.kalbermatter at hccnet.nl
Wed Jan 2 05:06:57 CST 2008


Gerald Pfeifer wrote on Tuesday, January 01, 2008 6:03 PM:

This code obviously was written with signed operands in mind. I wonder if
they could get signed somewhere and this function simply uses the wrong
datatype.

> (I did not get _any_ response for my first mail a month ago 
> and I still believe the else-part looks bogus, but can we get 
> at least this first cleanup in?)

In the else statement InExt could be 0 (either that or OutExt would be 0)
which would cause a division by 0 exception. Definitely doesn't sound right
to me. But I have no idea what that code is supposed to do.

> @@ -160,10 +160,10 @@ int TABLET_PostTabletMessage(LPOPENCONTE
>  static inline DWORD ScaleForContext(DWORD In, DWORD InOrg, 
> DWORD InExt, DWORD
>                                      OutOrg, DWORD OutExt)  {
> -    if (((InExt > 0 )&&(OutExt > 0)) || ((InExt<0) && (OutExt < 0)))
> -        return ((In - InOrg) * abs(OutExt) / abs(InExt)) + OutOrg;
> +    if ((InExt > 0) && (OutExt > 0))
> +        return ( (In - InOrg) * OutExt / InExt ) + OutOrg;
>      else
> -        return ((abs(InExt) - (In - InOrg))*abs(OutExt) / 
> abs(InExt)) + OutOrg;
> +        return ( (InExt - (In - InOrg)) * OutExt / InExt ) + OutOrg;
>  }
>  
>  LPOPENCONTEXT AddPacketToContextQueue(LPWTPACKET packet, HWND hwnd)

Rolf Kalbermatter




More information about the wine-devel mailing list