From 9b38c4c74fd16a5dd39cc340ffdcfd8c9d672442 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C5=99emysl=20Janouch?= Date: Sat, 21 Jul 2018 23:36:13 +0200 Subject: Fix undefined behaviour --- nncmpp.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/nncmpp.c b/nncmpp.c index 72d30fd..8751b8e 100644 --- a/nncmpp.c +++ b/nncmpp.c @@ -2211,12 +2211,15 @@ app_init_bindings (const char *keymap, ARRAY (struct binding, a) ARRAY_INIT_SIZED (a, defaults_len); + // Order for stable sorting + size_t order = 0; + termo_key_t decoded; for (size_t i = 0; i < defaults_len; i++) { hard_assert (!*termo_strpkey_utf8 (g.tk, defaults[i].key, &decoded, TERMO_FORMAT_ALTISMETA)); - a[a_len++] = (struct binding) { decoded, defaults[i].action, a_len }; + a[a_len++] = (struct binding) { decoded, defaults[i].action, order++ }; } struct config_item *root = config_item_get (g.config.root, keymap, NULL); @@ -2227,7 +2230,7 @@ app_init_bindings (const char *keymap, int action; while (app_next_binding (&iter, &decoded, &action)) - a[a_len++] = (struct binding) { decoded, action, a_len }; + a[a_len++] = (struct binding) { decoded, action, order++ }; } // Use the helper field to use the last mappings of identical bindings -- cgit v1.2.3