|
Adam Tkac |
1557084 |
From 3fae47581a47613f1117b8794ae37b75ace73f3e Mon Sep 17 00:00:00 2001
|
|
Adam Tkac |
1557084 |
From: Adam Tkac <atkac@redhat.com>
|
|
Adam Tkac |
1557084 |
Date: Tue, 24 Aug 2010 17:21:30 +0200
|
|
Adam Tkac |
1557084 |
Subject: [PATCH] Return Success from generate_modkeymap() when max_keys_per_mod is zero.
|
|
Adam Tkac |
1557084 |
|
|
Adam Tkac |
1557084 |
max_keys_per_mod equal to zero is a valid situation so generate_modkeymap
|
|
Adam Tkac |
1557084 |
should not return BadAlloc in this case.
|
|
Adam Tkac |
1557084 |
|
|
Adam Tkac |
1557084 |
Signed-off-by: Adam Tkac <atkac@redhat.com>
|
|
Adam Tkac |
1557084 |
---
|
|
Adam Tkac |
1557084 |
dix/inpututils.c | 24 +++++++++++++-----------
|
|
Adam Tkac |
1557084 |
1 files changed, 13 insertions(+), 11 deletions(-)
|
|
Adam Tkac |
1557084 |
|
|
Adam Tkac |
1557084 |
diff --git a/dix/inpututils.c b/dix/inpututils.c
|
|
Adam Tkac |
1557084 |
index 8ec80b5..6693c67 100644
|
|
Adam Tkac |
1557084 |
--- a/dix/inpututils.c
|
|
Adam Tkac |
1557084 |
+++ b/dix/inpututils.c
|
|
Adam Tkac |
1557084 |
@@ -286,7 +286,7 @@ int generate_modkeymap(ClientPtr client, DeviceIntPtr dev,
|
|
Adam Tkac |
1557084 |
{
|
|
Adam Tkac |
1557084 |
CARD8 keys_per_mod[8];
|
|
Adam Tkac |
1557084 |
int max_keys_per_mod;
|
|
Adam Tkac |
1557084 |
- KeyCode *modkeymap;
|
|
Adam Tkac |
1557084 |
+ KeyCode *modkeymap = NULL;
|
|
Adam Tkac |
1557084 |
int i, j, ret;
|
|
Adam Tkac |
1557084 |
|
|
Adam Tkac |
1557084 |
ret = XaceHook(XACE_DEVICE_ACCESS, client, dev, DixGetAttrAccess);
|
|
Adam Tkac |
1557084 |
@@ -310,18 +310,20 @@ int generate_modkeymap(ClientPtr client, DeviceIntPtr dev,
|
|
Adam Tkac |
1557084 |
}
|
|
Adam Tkac |
1557084 |
}
|
|
Adam Tkac |
1557084 |
|
|
Adam Tkac |
1557084 |
- modkeymap = calloc(max_keys_per_mod * 8, sizeof(KeyCode));
|
|
Adam Tkac |
1557084 |
- if (!modkeymap)
|
|
Adam Tkac |
1557084 |
- return BadAlloc;
|
|
Adam Tkac |
1557084 |
+ if (max_keys_per_mod != 0) {
|
|
Adam Tkac |
1557084 |
+ modkeymap = calloc(max_keys_per_mod * 8, sizeof(KeyCode));
|
|
Adam Tkac |
1557084 |
+ if (!modkeymap)
|
|
Adam Tkac |
1557084 |
+ return BadAlloc;
|
|
Adam Tkac |
1557084 |
|
|
Adam Tkac |
1557084 |
- for (i = 0; i < 8; i++)
|
|
Adam Tkac |
1557084 |
- keys_per_mod[i] = 0;
|
|
Adam Tkac |
1557084 |
+ for (i = 0; i < 8; i++)
|
|
Adam Tkac |
1557084 |
+ keys_per_mod[i] = 0;
|
|
Adam Tkac |
1557084 |
|
|
Adam Tkac |
1557084 |
- for (i = 8; i < MAP_LENGTH; i++) {
|
|
Adam Tkac |
1557084 |
- for (j = 0; j < 8; j++) {
|
|
Adam Tkac |
1557084 |
- if (dev->key->xkbInfo->desc->map->modmap[i] & (1 << j)) {
|
|
Adam Tkac |
1557084 |
- modkeymap[(j * max_keys_per_mod) + keys_per_mod[j]] = i;
|
|
Adam Tkac |
1557084 |
- keys_per_mod[j]++;
|
|
Adam Tkac |
1557084 |
+ for (i = 8; i < MAP_LENGTH; i++) {
|
|
Adam Tkac |
1557084 |
+ for (j = 0; j < 8; j++) {
|
|
Adam Tkac |
1557084 |
+ if (dev->key->xkbInfo->desc->map->modmap[i] & (1 << j)) {
|
|
Adam Tkac |
1557084 |
+ modkeymap[(j * max_keys_per_mod) + keys_per_mod[j]] = i;
|
|
Adam Tkac |
1557084 |
+ keys_per_mod[j]++;
|
|
Adam Tkac |
1557084 |
+ }
|
|
Adam Tkac |
1557084 |
}
|
|
Adam Tkac |
1557084 |
}
|
|
Adam Tkac |
1557084 |
}
|
|
Adam Tkac |
1557084 |
--
|
|
Adam Tkac |
1557084 |
1.7.2.2
|
|
Adam Tkac |
1557084 |
|