summaryrefslogtreecommitdiff
path: root/dix
diff options
context:
space:
mode:
authorOtto Moerbeek <otto@openbsd.org>2007-08-23 21:59:25 +0200
committerMatthieu Herrb <matthieu@bluenote.herrb.com>2007-08-23 21:59:25 +0200
commit12d27cf33c6d963eae77795c0d247175907162a5 (patch)
tree408c9ec10d83df439b43fc9b24b828d30991e7ae /dix
parentff089e6cae634ac3eb509abd448a250bcbb17275 (diff)
A high resolution device that's moving fast can potentially generate
an int overflow, making dx*dx+dy*dy negative. Now pow(negative, non-integer) yields NaN, so you loose. Use fp math to avoid that.
Diffstat (limited to 'dix')
-rw-r--r--dix/getevents.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/dix/getevents.c b/dix/getevents.c
index 2a10038bc..52b74bd30 100644
--- a/dix/getevents.c
+++ b/dix/getevents.c
@@ -250,7 +250,7 @@ acceleratePointer(DeviceIntPtr pDev, int first_valuator, int num_valuators,
}
}
else {
- mult = pow((float)(dx * dx + dy * dy),
+ mult = pow((float)((float)dx * (float)dx + (float)dy * (float)dy),
((float)(pDev->ptrfeed->ctrl.num) /
(float)(pDev->ptrfeed->ctrl.den) - 1.0) /
2.0) / 2.0;