From: James S. <jsi...@tr...> - 2001-07-25 02:59:42
|
> 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}. Hm. I have done this :-/ Shouldn't it print a error instead? > > 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; > > |