From: Charles D. <cd...@mv...> - 2001-07-22 15:42:37
|
This patch stops mousedev from dividing by zero when handling events from (faulty?) drivers which send ABS_* events but don't set dev->abs{min,max}. Index: mousedev.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/input/mousedev.c,v retrieving revision 1.27 diff -u -3 -r1.27 mousedev.c --- mousedev.c 2001/06/24 15:16:34 1.27 +++ mousedev.c 2001/07/22 15:39:06 @@ -97,15 +97,25 @@ if (test_bit(BTN_TRIGGER, handle->dev->keybit)) break; switch (code) { - case ABS_X: + case ABS_X: size = handle->dev->absmax[ABS_X] - handle->dev->absmin[ABS_X]; - list->dx += (value * xres - list->oldx) / size; - list->oldx += list->dx * size; + if(size != 0) { + list->dx += (value * xres - list->oldx) / size; + list->oldx += list->dx * size; + } else { + list->dx += value - list->oldx; + list->oldx += list->dx; + } break; case ABS_Y: size = handle->dev->absmax[ABS_Y] - handle->dev->absmin[ABS_Y]; - list->dy -= (value * yres - list->oldy) / size; - list->oldy -= list->dy * size; + if(size != 0) { + list->dy -= (value * yres - list->oldy) / size; + list->oldy -= list->dy * size; + } else { + list->dy -= value - list->oldy; + list->oldy -= list->dy; + } break; } break; |