From 50a2a8dc76645d8736f7d712f0ef05f23089407e Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Fri, 3 Jul 2009 09:18:57 +1000 Subject: [PATCH] Fix IsXtstDevice - returns false positives since 0814f511d5. Missing check for the value of 'mid' returned false positives if master was NULL. Signed-off-by: Peter Hutterer --- dix/devices.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/dix/devices.c b/dix/devices.c index a99d046a5..e000f29ce 100644 --- a/dix/devices.c +++ b/dix/devices.c @@ -2625,16 +2625,23 @@ int AllocXtstDevice (ClientPtr client, char* name, BOOL IsXtstDevice(DeviceIntPtr dev, DeviceIntPtr master) { + int is_xtst = FALSE; int mid; void *tmp; /* shut up, gcc! */ if (IsMaster(dev)) - return FALSE; + return is_xtst; tmp = dixLookupPrivate(&dev->devPrivates, XTstDevicePrivateKey); mid = (int)tmp; - return (!master || mid == master->id); + /* deviceid 0 is reserved for XIAllDevices, non-zero mid means xtst + * device */ + if ((!master && mid) || + (master && mid == master->id)) + is_xtst = TRUE; + + return is_xtst; } /**