Merge branch 'segfault_when_removing_masters' into 'master'

Xi: Fix segfault when removing slave

See merge request xorg/xserver!876
This commit is contained in:
Arthur Williams 2025-12-11 05:45:16 +00:00
commit f3ac5f1e71

View file

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