On Wed, Apr 14, 2010 at 05:27:51PM +0200, Benjamin Tissoires 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 <[email protected]> > Signed-off-by: Benjamin Tissoires <[email protected]> > --- > hw/xfree86/common/xf86Xinput.c | 8 ++++---- > 1 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c > index 7723ba6..dba3370 100644 > --- a/hw/xfree86/common/xf86Xinput.c > +++ b/hw/xfree86/common/xf86Xinput.c > @@ -86,6 +86,7 @@ > #include "windowstr.h" /* screenIsSaved */ > > #include <stdarg.h> > +#include <stdint.h> /* for int64_t */ > > #include <X11/Xpoll.h> > > @@ -1177,12 +1178,11 @@ 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; > > - dSx = Sxhigh - Sxlow; > if (dRx) { > - X = ((dSx * (Cx - Rxlow)) / dRx) + Sxlow; > + X = (int)(((dSx * (Cx - Rxlow)) / dRx) + Sxlow); > } > else { > X = 0; > -- > 1.6.6.1
merged into my tree, thank you. Cheers, Peter _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
