]> git.pld-linux.org Git - packages/tigervnc.git/blob - tigervnc-rh611677-generate_modkeymap-max_keys.patch
- pl descr
[packages/tigervnc.git] / tigervnc-rh611677-generate_modkeymap-max_keys.patch
1 From 3fae47581a47613f1117b8794ae37b75ace73f3e Mon Sep 17 00:00:00 2001
2 From: Adam Tkac <atkac@redhat.com>
3 Date: Tue, 24 Aug 2010 17:21:30 +0200
4 Subject: [PATCH] Return Success from generate_modkeymap() when max_keys_per_mod is zero.
5
6 max_keys_per_mod equal to zero is a valid situation so generate_modkeymap
7 should not return BadAlloc in this case.
8
9 Signed-off-by: Adam Tkac <atkac@redhat.com>
10 ---
11  dix/inpututils.c |   24 +++++++++++++-----------
12  1 files changed, 13 insertions(+), 11 deletions(-)
13
14 diff --git a/dix/inpututils.c b/dix/inpututils.c
15 index 8ec80b5..6693c67 100644
16 --- a/dix/inpututils.c
17 +++ b/dix/inpututils.c
18 @@ -286,7 +286,7 @@ int generate_modkeymap(ClientPtr client, DeviceIntPtr dev,
19  {
20      CARD8 keys_per_mod[8];
21      int max_keys_per_mod;
22 -    KeyCode *modkeymap;
23 +    KeyCode *modkeymap = NULL;
24      int i, j, ret;
25  
26      ret = XaceHook(XACE_DEVICE_ACCESS, client, dev, DixGetAttrAccess);
27 @@ -310,18 +310,20 @@ int generate_modkeymap(ClientPtr client, DeviceIntPtr dev,
28          }
29      }
30  
31 -    modkeymap = calloc(max_keys_per_mod * 8, sizeof(KeyCode));
32 -    if (!modkeymap)
33 -        return BadAlloc;
34 +    if (max_keys_per_mod != 0) {
35 +        modkeymap = calloc(max_keys_per_mod * 8, sizeof(KeyCode));
36 +        if (!modkeymap)
37 +            return BadAlloc;
38  
39 -    for (i = 0; i < 8; i++)
40 -        keys_per_mod[i] = 0;
41 +        for (i = 0; i < 8; i++)
42 +            keys_per_mod[i] = 0;
43  
44 -    for (i = 8; i < MAP_LENGTH; i++) {
45 -        for (j = 0; j < 8; j++) {
46 -            if (dev->key->xkbInfo->desc->map->modmap[i] & (1 << j)) {
47 -                modkeymap[(j * max_keys_per_mod) + keys_per_mod[j]] = i;
48 -                keys_per_mod[j]++;
49 +        for (i = 8; i < MAP_LENGTH; i++) {
50 +            for (j = 0; j < 8; j++) {
51 +                if (dev->key->xkbInfo->desc->map->modmap[i] & (1 << j)) {
52 +                    modkeymap[(j * max_keys_per_mod) + keys_per_mod[j]] = i;
53 +                    keys_per_mod[j]++;
54 +                }
55              }
56          }
57      }
58 -- 
59 1.7.2.2
60
This page took 0.024719 seconds and 3 git commands to generate.