summaryrefslogtreecommitdiff
path: root/src/keymap.c
diff options
context:
space:
mode:
authorRan Benita <ran234@gmail.com>2012-10-10 17:51:06 +0200
committerRan Benita <ran234@gmail.com>2012-10-10 17:51:06 +0200
commitf3732d8349556e8615cb704fa9643712e954fee6 (patch)
treebd0a191ceca09c5fc5ca04059811a2a0d41ad0e1 /src/keymap.c
parentbdea377c9319dd8e5a385dd45d9fbd2b28ceaf36 (diff)
downloadxorg-lib-libxkbcommon-f3732d8349556e8615cb704fa9643712e954fee6.tar.gz
keymap: don't use darray for keymap->keys
It's never resized. Signed-off-by: Ran Benita <ran234@gmail.com>
Diffstat (limited to 'src/keymap.c')
-rw-r--r--src/keymap.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/keymap.c b/src/keymap.c
index fb63639..7761858 100644
--- a/src/keymap.c
+++ b/src/keymap.c
@@ -89,16 +89,18 @@ xkb_keymap_unref(struct xkb_keymap *keymap)
if (!keymap || --keymap->refcnt > 0)
return;
- darray_foreach(key, keymap->keys) {
- for (i = 0; i < key->num_groups; i++) {
- for (j = 0; j < XkbKeyGroupWidth(key, i); j++)
- if (key->groups[i].levels[j].num_syms > 1)
- free(key->groups[i].levels[j].u.syms);
- free(key->groups[i].levels);
+ if (keymap->keys) {
+ xkb_foreach_key(key, keymap) {
+ for (i = 0; i < key->num_groups; i++) {
+ for (j = 0; j < XkbKeyGroupWidth(key, i); j++)
+ if (key->groups[i].levels[j].num_syms > 1)
+ free(key->groups[i].levels[j].u.syms);
+ free(key->groups[i].levels);
+ }
+ free(key->groups);
}
- free(key->groups);
+ free(keymap->keys);
}
- darray_free(keymap->keys);
for (i = 0; i < keymap->num_types; i++) {
free(keymap->types[i].map);
free(keymap->types[i].level_names);