Merge branch 'segfault_when_removing_masters' into 'main'

Xi: Fix segfault when removing slave

See merge request xorg/xserver!876
This commit is contained in:
Arthur Williams 2026-03-26 08:09:41 +00:00
commit 3cf58e0d7c

View file

@ -82,20 +82,24 @@ XISendDeviceHierarchyEvent(int flags[MAXDEVICES])
info = (xXIHierarchyInfo *) &ev[1];
for (dev = inputInfo.devices; dev; dev = dev->next) {
info->deviceid = dev->id;
info->enabled = dev->enabled;
info->use = GetDeviceUse(dev, &info->attachment);
info->flags = flags[dev->id];
ev->flags |= info->flags;
info++;
if (flags[dev->id] && !(flags[dev->id] & (XIMasterRemoved | XISlaveRemoved))) {
info->deviceid = dev->id;
info->enabled = dev->enabled;
info->use = GetDeviceUse(dev, &info->attachment);
info->flags = flags[dev->id];
ev->flags |= info->flags;
info++;
}
}
for (dev = inputInfo.off_devices; dev; dev = dev->next) {
info->deviceid = dev->id;
info->enabled = dev->enabled;
info->use = GetDeviceUse(dev, &info->attachment);
info->flags = flags[dev->id];
ev->flags |= info->flags;
info++;
if (flags[dev->id] && !(flags[dev->id] & (XIMasterRemoved | XISlaveRemoved))) {
info->deviceid = dev->id;
info->enabled = dev->enabled;
info->use = GetDeviceUse(dev, &info->attachment);
info->flags = flags[dev->id];
ev->flags |= info->flags;
info++;
}
}
for (i = 0; i < MAXDEVICES; i++) {