Dan Nicholson wrote:
On Fri, Apr 9, 2010 at 7:51 AM, Benjamin Tissoires<tisso...@cena.fr>  wrote:
High resolution devices was generating integer overflow.
For instance the wacom Cintiq 21UX has an axis value up to
87000. Thus the term (dSx * (Cx - Rxlow)) is greater than
MAX_INT32.

Using 64bits integer avoids such problem.

Signed-off-by: Philippe Ribet<ri...@cena.fr>
Signed-off-by: Benjamin Tissoires<tisso...@cena.fr>
---
  hw/xfree86/common/xf86Xinput.c |    6 +++---
  1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c
index 8229227..80bdd19 100644
--- a/hw/xfree86/common/xf86Xinput.c
+++ b/hw/xfree86/common/xf86Xinput.c
@@ -1172,12 +1172,12 @@ xf86ScaleAxis(int       Cx,
               int      Rxlow )
  {
     int X;
-    int dSx = Sxhigh - Sxlow;
-    int dRx = Rxhigh - Rxlow;
+    int64_t dSx = Sxhigh - Sxlow;
+    int64_t dRx = Rxhigh - Rxlow;
Not sure, but would you not also need to change the function
parameters to int64_t?
I don't expect any input peripheral to send values bigger than 32 bits.

Philippe Ribet

_______________________________________________
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to