[PATCH v2] wintab32: Use 64-bit math in ScaleForContext.
With some tablet configurations, the InExt value passed to ScaleForContext can be very large, leading to an integer overflow. Using MulDiv prevents this problem by internally using 64-bit math. --- dlls/wintab32/context.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dlls/wintab32/context.c b/dlls/wintab32/context.c index 0514dd78b4..ff9a4ca677 100644 --- a/dlls/wintab32/context.c +++ b/dlls/wintab32/context.c @@ -178,9 +178,9 @@ int TABLET_PostTabletMessage(LPOPENCONTEXT newcontext, UINT msg, WPARAM wParam, static inline DWORD ScaleForContext(DWORD In, LONG InOrg, LONG InExt, LONG OutOrg, LONG OutExt) { if (((InExt > 0 )&&(OutExt > 0)) || ((InExt<0) && (OutExt < 0))) - return ((In - InOrg) * abs(OutExt) / abs(InExt)) + OutOrg; + return MulDiv(In - InOrg, abs(OutExt), abs(InExt)) + OutOrg; else - return ((abs(InExt) - (In - InOrg))*abs(OutExt) / abs(InExt)) + OutOrg; + return MulDiv(abs(InExt) - (In - InOrg), abs(OutExt), abs(InExt)) + OutOrg; } LPOPENCONTEXT AddPacketToContextQueue(LPWTPACKET packet, HWND hwnd) -- 2.23.0
Hi, While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check? Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=60285 Your paranoid android. === debian10 (build log) === error: corrupt patch at line 13 Task: Patch failed to apply === debian10 (build log) === error: corrupt patch at line 13 Task: Patch failed to apply
participants (2)
-
John Chadwick -
Marvin