From 4aaf4a6be2d546b5be491aedb1438e3290a88cc8 Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Wed, 7 May 2025 13:00:12 +0200 Subject: [PATCH] (!1967) dix: devices: refine NULL checks in GetMaster() The checking / branchin isn't entirely trivial to understand, and the analyzer also gets confused. So rewrite it in an simpler way that's easier to understand both the human reader as well as the analyzer. (and so get rid of yet another false alarm) Signed-off-by: Enrico Weigelt, metux IT consult --- dix/devices.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) 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;