The logic was a little misinterpreted in 1.8 commit.
Reduce buffers size to what's necessary.
---
usr.bin/mg/help.c | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/usr.bin/mg/help.c b/usr.bin/mg/help.c
index cd983a3df2c..ff9aeebd7ad 100644
--- a/usr.bin/mg/help.c
+++ b/usr.bin/mg/help.c
@@ -17,6 +17,8 @@
#include "key.h"
#include "macro.h"
+#define KEYNAMESZ 6 /* max is "C-SPC" */
+
static int showall(struct buffer *, KEYMAP *, char *);
static int findbind(KEYMAP *, PF, char *, size_t);
@@ -128,7 +130,7 @@ static int
showall(struct buffer *bp, KEYMAP *map, char *prefix)
{
KEYMAP *newmap;
- char buf[80], keybuf[16];
+ char buf[MAXKEY*KEYNAMESZ+1], keybuf[KEYNAMESZ];
PF fun;
int c;
@@ -140,13 +142,13 @@ showall(struct buffer *bp, KEYMAP *map, char *prefix)
fun = doscan(map, c, &newmap);
if (fun == rescan || fun == selfinsert)
continue;
- getkeyname(buf, sizeof(buf), c);
- (void)snprintf(keybuf, sizeof(keybuf), "%s%s ", prefix, buf);
+ getkeyname(keybuf, sizeof(keybuf), c);
+ (void)snprintf(buf, sizeof(buf), "%s%s ", prefix, keybuf);
if (fun == NULL) {
- if (showall(bp, newmap, keybuf) == FALSE)
+ if (showall(bp, newmap, buf) == FALSE)
return (FALSE);
} else {
- if (addlinef(bp, "%-16s%s", keybuf,
+ if (addlinef(bp, "%-16s%s", buf,
function_name(fun)) == FALSE)
return (FALSE);
}
--
2.23.0