diff options
author | Ran Benita <ran234@gmail.com> | 2012-10-10 17:51:06 +0200 |
---|---|---|
committer | Ran Benita <ran234@gmail.com> | 2012-10-10 17:51:06 +0200 |
commit | f3732d8349556e8615cb704fa9643712e954fee6 (patch) | |
tree | bd0a191ceca09c5fc5ca04059811a2a0d41ad0e1 /src/keymap.c | |
parent | bdea377c9319dd8e5a385dd45d9fbd2b28ceaf36 (diff) | |
download | xorg-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.c | 18 |
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); |