Xi: Only alloc modifierKeyMap if <slave device>->maxKeysPerModifier > 0
Sometimes (e.g. on my debian ppc box) maxKeysPerModifier of the SD is 0. So we try to malloc(0), bringing the whole server down with a FatalError because it looks as if the malloc failed. This is bad, so only alloc if we actually have something to alloc.
This commit is contained in:
parent
070195dbf8
commit
83926cb8be
|
@ -147,11 +147,14 @@ CopyKeyClass(DeviceIntPtr device, DeviceIntPtr master)
|
||||||
if (master->devPrivates[CoreDevicePrivatesIndex].ptr != device) {
|
if (master->devPrivates[CoreDevicePrivatesIndex].ptr != device) {
|
||||||
memcpy(mk->modifierMap, dk->modifierMap, MAP_LENGTH);
|
memcpy(mk->modifierMap, dk->modifierMap, MAP_LENGTH);
|
||||||
|
|
||||||
mk->modifierKeyMap = xcalloc(8, dk->maxKeysPerModifier);
|
if (dk->maxKeysPerModifier)
|
||||||
if (!mk->modifierKeyMap)
|
{
|
||||||
FatalError("[Xi] no memory for class shift.\n");
|
mk->modifierKeyMap = xcalloc(8, dk->maxKeysPerModifier);
|
||||||
memcpy(mk->modifierKeyMap, dk->modifierKeyMap,
|
if (!mk->modifierKeyMap)
|
||||||
(8 * dk->maxKeysPerModifier));
|
FatalError("[Xi] no memory for class shift.\n");
|
||||||
|
memcpy(mk->modifierKeyMap, dk->modifierKeyMap,
|
||||||
|
(8 * dk->maxKeysPerModifier));
|
||||||
|
}
|
||||||
|
|
||||||
mk->maxKeysPerModifier = dk->maxKeysPerModifier;
|
mk->maxKeysPerModifier = dk->maxKeysPerModifier;
|
||||||
mk->curKeySyms.minKeyCode = dk->curKeySyms.minKeyCode;
|
mk->curKeySyms.minKeyCode = dk->curKeySyms.minKeyCode;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user