diff --git a/src/keymap.c b/src/keymap.c index efac410d317..7f5777c9251 100644 --- a/src/keymap.c +++ b/src/keymap.c @@ -3308,13 +3308,18 @@ describe_vector (Lisp_Object vector, Lisp_Object prefix, Lisp_Object args, if (this_shadowed) { SET_PT (PT - 1); - static char const fmt[] = " (currently shadowed by `%s')"; - USE_SAFE_ALLOCA; - char *buffer = SAFE_ALLOCA (sizeof fmt + - SBYTES (SYMBOL_NAME (shadowed_by))); - esprintf (buffer, fmt, SDATA (SYMBOL_NAME (shadowed_by))); - insert_string (buffer); - SAFE_FREE(); + if (SYMBOLP (shadowed_by)) + { + static char const fmt[] = " (currently shadowed by `%s')"; + USE_SAFE_ALLOCA; + char *buffer = + SAFE_ALLOCA (sizeof fmt + SBYTES (SYMBOL_NAME (shadowed_by))); + esprintf (buffer, fmt, SDATA (SYMBOL_NAME (shadowed_by))); + insert_string (buffer); + SAFE_FREE(); + } + else /* Could be a keymap, a lambda, or a keyboard macro. */ + insert_string (" (currently shadowed)"); SET_PT (PT + 1); } }