diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2018-01-09 15:29:25 -0800 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2018-01-09 15:29:25 -0800 |
commit | ddb26f79b20329ada5f5bc6e1742807d029e06c0 (patch) | |
tree | 4eb2572b11bba0c4fa7fc388dc2f65648be89b5e /src/callint.c | |
parent | 0b33768053184ceadda0ca6dc431969e664cd17e (diff) | |
parent | 7668717d6fecd610d71b54a33708038b2ede8cce (diff) | |
download | emacs-ddb26f79b20329ada5f5bc6e1742807d029e06c0.tar.gz |
Merge from origin/emacs-26
7668717d6f Merge from Gnulib
9e4d523427 * lisp/epg.el (epg-start-sign): Replace obsolete functions.
26c58f31a8 Small fix for erc-logging-enabled
34b41e3bc6 Quieten semantic normal usage
e25f961e37 Avoid irrelevant hyperlink in doc string of 'epa-pinentry-...
ec2636513c * doc/misc/tramp.texi (Remote processes): Mention gdb rest...
918a052a42 Query background for gnome terminal version 3.22 (Bug#29716)
1dfc27576a Make pixel-wise scrolling less laggy
f92264fc2a Fix child frame placement issues (bug#29953)
a5f718c4c5 ; * doc/lispref/text.texi (Change Hooks): Fix last change.
e876f5f9fb Describe the precise interaction of complex primitives wit...
3a22097cf6 Fix valgrind report in call-interactively
d5f1c87bfe * src/editfns.c (Fsave_excursion): Doc fix. (Bug#30001)
b8d74c4578 Fix mark-defun when there's no spaces between successive d...
a377c652b5 Fix Dired display and operations on file names with raw bytes
d9d6e8a04c ; Comments related to src/termcap.c
f8a07fa6b1 Improve documentation of 'gdb-many-windows'
f82400798e Fix failures in smerge-mode on MS-Windows
Diffstat (limited to 'src/callint.c')
-rw-r--r-- | src/callint.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/src/callint.c b/src/callint.c index c713e08d4d4..2253cdf3b44 100644 --- a/src/callint.c +++ b/src/callint.c @@ -778,10 +778,23 @@ invoke it. If KEYS is omitted or nil, the return value of if anyone tries to define one here. */ case '+': default: - error ("Invalid control letter `%c' (#o%03o, #x%04x) in interactive calling string", - STRING_CHAR ((unsigned char *) tem), - (unsigned) STRING_CHAR ((unsigned char *) tem), - (unsigned) STRING_CHAR ((unsigned char *) tem)); + { + /* How many bytes are left unprocessed in the specs string? + (Note that this excludes the trailing null byte.) */ + ptrdiff_t bytes_left = SBYTES (specs) - (tem - string); + unsigned letter; + + /* If we have enough bytes left to treat the sequence as a + character, show that character's codepoint; otherwise + show only its first byte. */ + if (bytes_left >= BYTES_BY_CHAR_HEAD (*((unsigned char *) tem))) + letter = STRING_CHAR ((unsigned char *) tem); + else + letter = *((unsigned char *) tem); + + error ("Invalid control letter `%c' (#o%03o, #x%04x) in interactive calling string", + (int) letter, letter, letter); + } } if (varies[i] == 0) |