Both mouse and mouse->button are already used before their checking were being performed. So check on the beginning.
Signed-off-by: Tiago Vignatti <[email protected]> --- Xi/exevents.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/Xi/exevents.c b/Xi/exevents.c index e680f6f..7a1f6cf 100644 --- a/Xi/exevents.c +++ b/Xi/exevents.c @@ -1241,6 +1241,8 @@ DeviceFocusEvent(DeviceIntPtr dev, int type, int mode, int detail, int btlen, len, i; mouse = (IsMaster(dev) || dev->u.master) ? GetMaster(dev, MASTER_POINTER) : dev; + if (!mouse || !mouse->button) + FatalError("no device mouse found"); /* XI 2 event */ btlen = (mouse->button) ? bits_to_bytes(mouse->button->numButtons) : 0; @@ -1261,7 +1263,7 @@ DeviceFocusEvent(DeviceIntPtr dev, int type, int mode, int detail, xi2event->root_x = FP1616(mouse->spriteInfo->sprite->hot.x, 0); xi2event->root_y = FP1616(mouse->spriteInfo->sprite->hot.y, 0); - for (i = 0; mouse && mouse->button && i < mouse->button->numButtons; i++) + for (i = 0; i < mouse->button->numButtons; i++) if (BitIsOn(mouse->button->down, i)) SetBit(&xi2event[1], i); -- 1.6.0.4 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
