From 12dd6e9911de187e0ebee86434e8c24a67c990f9 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Fri, 16 Nov 2007 17:23:09 +1030 Subject: [PATCH] dix: reset MD's devPrivate classes to NULL before device initialisation. XkbInitKeyboardDefviceStruct may call FatalError if it fails. FatalError then cleans up all the devices, resulting in a segfault if the pointer is uninitialised. --- dix/devices.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dix/devices.c b/dix/devices.c index 7512529e8..7d889a2c1 100644 --- a/dix/devices.c +++ b/dix/devices.c @@ -396,6 +396,8 @@ CoreKeyboardProc(DeviceIntPtr pDev, int what) if (!AllocateDevicePrivate(pDev, MasterDevClassesPrivIdx) || !(classes = xcalloc(1, sizeof(ClassesRec)))) + pDev->devPrivates[MasterDevClassesPrivIdx].ptr = NULL; + keySyms.minKeyCode = 8; keySyms.maxKeyCode = 255; keySyms.mapWidth = 4; @@ -495,6 +497,8 @@ CorePointerProc(DeviceIntPtr pDev, int what) !(classes = xcalloc(1, sizeof(ClassesRec)))) return BadAlloc; + pDev->devPrivates[MasterDevClassesPrivIdx].ptr = NULL; + for (i = 1; i <= 32; i++) map[i] = i; InitPointerDeviceStruct((DevicePtr)pDev, map, 32,