File xf86-input-evdev-sig11-bug416043.diff of Package xorg-x11-driver-input
diff -u -p -r ../xf86-input-evdev-1.1.5.orig//src/evdev.c ./src/evdev.c
--- ../xf86-input-evdev-1.1.5.orig//src/evdev.c 2008-08-11 15:08:00.000000000 +0200
+++ ./src/evdev.c 2008-08-11 15:50:25.000000000 +0200
@@ -335,7 +335,11 @@ EvdevNew(evdevDriverPtr driver, evdevDev
if (driver->configured) {
xf86ActivateDevice (pInfo);
- pInfo->dev->inited = (device->callback(device->pInfo->dev, DEVICE_INIT) == Success);
+ if (device->pInfo->dev) {
+ pInfo->dev->inited = (device->callback(device->pInfo->dev, DEVICE_INIT) == Success);
+ } else {
+ pInfo->dev->inited = 0;
+ }
EnableDevice (pInfo->dev);
}
diff -u -p -r ../xf86-input-evdev-1.1.5.orig//src/evdev_brain.c ./src/evdev_brain.c
--- ../xf86-input-evdev-1.1.5.orig//src/evdev_brain.c 2008-08-11 15:08:00.000000000 +0200
+++ ./src/evdev_brain.c 2008-08-11 15:11:47.000000000 +0200
@@ -211,7 +211,7 @@ evdevScanDevice (evdevDriverPtr driver,
found = 0;
for (device = driver->devices; device; device = device->next) {
if (MatchDevice (device, info)) {
- if (device->seen != (evdev_seq - 1)) {
+ if ((device->seen != (evdev_seq - 1)) && device->pInfo->dev) {
device->device = xstrdup(info->dev);
device->phys = xstrdup(info->phys);
device->callback(device->pInfo->dev, DEVICE_ON);
@@ -298,7 +298,7 @@ evdevRescanDevices (InputInfoPtr pInfo)
for (driver = evdev_drivers; driver; driver = driver->next)
for (device = driver->devices; device; device = device->next)
- if (device->seen == (evdev_seq - 1)) {
+ if ((device->seen == (evdev_seq - 1)) && device->pInfo->dev) {
device->callback(device->pInfo->dev, DEVICE_OFF);
if (device->device)