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);