xserver: Branch 'mpx'
Peter Hutterer
whot at kemper.freedesktop.org
Thu Nov 15 00:24:04 PST 2007
Xi/exevents.c | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
New commits:
commit 83926cb8bef6288b89e801c5e60b3f40e923e16e
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date: Thu Nov 15 17:41:07 2007 +1030
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.
diff --git a/Xi/exevents.c b/Xi/exevents.c
index 837afa3..1cef825 100644
--- a/Xi/exevents.c
+++ b/Xi/exevents.c
@@ -147,11 +147,14 @@ CopyKeyClass(DeviceIntPtr device, DeviceIntPtr master)
if (master->devPrivates[CoreDevicePrivatesIndex].ptr != device) {
memcpy(mk->modifierMap, dk->modifierMap, MAP_LENGTH);
- mk->modifierKeyMap = xcalloc(8, dk->maxKeysPerModifier);
- if (!mk->modifierKeyMap)
- FatalError("[Xi] no memory for class shift.\n");
- memcpy(mk->modifierKeyMap, dk->modifierKeyMap,
- (8 * dk->maxKeysPerModifier));
+ if (dk->maxKeysPerModifier)
+ {
+ mk->modifierKeyMap = xcalloc(8, dk->maxKeysPerModifier);
+ if (!mk->modifierKeyMap)
+ FatalError("[Xi] no memory for class shift.\n");
+ memcpy(mk->modifierKeyMap, dk->modifierKeyMap,
+ (8 * dk->maxKeysPerModifier));
+ }
mk->maxKeysPerModifier = dk->maxKeysPerModifier;
mk->curKeySyms.minKeyCode = dk->curKeySyms.minKeyCode;
More information about the xorg-commit
mailing list