Enlarge keysym name buffers and mention in comment The longest keysym is 27 chars long. Signed-off-by: Ran Benita <ran234@gmail.com>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
diff --git a/include/xkbcommon/xkbcommon.h b/include/xkbcommon/xkbcommon.h
index 31d0dcf..14d5045 100644
--- a/include/xkbcommon/xkbcommon.h
+++ b/include/xkbcommon/xkbcommon.h
@@ -140,12 +140,14 @@ extern "C" {
/*
* Returns the name for a keysym as a string; will return unknown Unicode
* codepoints as "Ua1b2", and other unknown keysyms as "0xabcd1234".
+ * If the buffer passed is too small, the string is truncated; a size of
+ * at least 32 bytes is recommended.
*/
void
xkb_keysym_get_name(xkb_keysym_t ks, char *buffer, size_t size);
/*
- * See xkb_keysym_to_string comments: this function will accept any string
+ * See xkb_keysym_get_name comments: this function will accept any string
* from that function.
*/
xkb_keysym_t
diff --git a/src/keymap-dump.c b/src/keymap-dump.c
index 7225fea..faa8d43 100644
--- a/src/keymap-dump.c
+++ b/src/keymap-dump.c
@@ -646,7 +646,7 @@ write_compat(struct xkb_keymap *keymap, char **buf, size_t *size,
if (interp->sym == XKB_KEY_NoSymbol)
sprintf(keysym_name, "Any");
else
- xkb_keysym_get_name(interp->sym, keysym_name, 64);
+ xkb_keysym_get_name(interp->sym, keysym_name, sizeof(keysym_name));
write_buf(keymap, buf, size, offset, "\t\tinterpret %s+%s(%s) {\n",
keysym_name,
diff --git a/src/text.c b/src/text.c
index d30c4b7..9db34d5 100644
--- a/src/text.c
+++ b/src/text.c
@@ -241,7 +241,7 @@ XkbcActionTypeText(unsigned type)
const char *
XkbcKeysymText(xkb_keysym_t sym)
{
- static char buffer[16];
+ static char buffer[64];
xkb_keysym_get_name(sym, buffer, sizeof buffer);
diff --git a/test/keyseq.c b/test/keyseq.c
index 2177fcc..4bf9d4f 100644
--- a/test/keyseq.c
+++ b/test/keyseq.c
@@ -68,7 +68,7 @@ test_key_seq(struct xkb_keymap *keymap, ...)
const xkb_keysym_t *syms;
unsigned int nsyms, i;
- char ksbuf[16];
+ char ksbuf[64];
state = xkb_state_new(keymap);
assert(state);