keymap: don't use XKB_NUM_GROUPS for key->kt_index
authorRan Benita <ran234@gmail.com>
Sun, 23 Sep 2012 18:36:01 +0000 (20:36 +0200)
committerDaniel Stone <daniel@fooishbar.org>
Sun, 23 Sep 2012 23:13:32 +0000 (09:13 +1000)
One unneeded XKB_NUM_GROUPS less.

Signed-off-by: Ran Benita <ran234@gmail.com>
src/keymap.c
src/keymap.h
src/xkbcomp/symbols.c

index 13ad829..43e43dd 100644 (file)
@@ -99,6 +99,7 @@ xkb_keymap_unref(struct xkb_keymap *keymap)
         free(key->num_syms);
         free(key->syms);
         free(key->actions);
+        free(key->kt_index);
     }
     darray_free(keymap->keys);
     darray_free(keymap->sym_interpret);
index 2f1e42e..af47e4b 100644 (file)
@@ -320,7 +320,7 @@ struct xkb_key {
 
     union xkb_action *actions;
 
-    unsigned kt_index[XKB_NUM_GROUPS];
+    unsigned *kt_index;
 
     xkb_layout_index_t num_groups;
     /* How many levels the largest group has. */
index f92f8a6..e5fc7c1 100644 (file)
@@ -1500,6 +1500,7 @@ out_of_loops:
      * Find and assign the groups' types in the keymap. Also find the
      * key width according to the largest type.
      */
+    key->kt_index = calloc(key->num_groups, sizeof(*key->kt_index));
     key->width = 0;
     darray_enumerate(i, groupi, keyi->groups) {
         struct xkb_key_type *type;