diff --git a/dix/devices.c b/dix/devices.c index 310364730..2c2d22e1d 100644 --- a/dix/devices.c +++ b/dix/devices.c @@ -2773,15 +2773,19 @@ GetMaster(DeviceIntPtr dev, int which) return dev; } - if (master && which != MASTER_ATTACHED) { - if (which == MASTER_KEYBOARD || which == KEYBOARD_OR_FLOAT) { - if (master->type != MASTER_KEYBOARD) - master = GetPairedDevice(master); - } - else { - if (master->type != MASTER_POINTER) - master = GetPairedDevice(master); - } + if (!master) + return NULL; + + if (which == MASTER_ATTACHED) + return master; + + if (which == MASTER_KEYBOARD || which == KEYBOARD_OR_FLOAT) { + if (master->type != MASTER_KEYBOARD) + return GetPairedDevice(master); + } + else { + if (master->type != MASTER_POINTER) + return GetPairedDevice(master); } return master;