Commit 1f492901314baae0172c19414fac6829089f97a4

Ran Benita 2012-07-11T18:00:31

Enlarge keysym name buffers and mention in comment The longest keysym is 27 chars long. Signed-off-by: Ran Benita <ran234@gmail.com>

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