diff options
Diffstat (limited to 'src/xdisp.c')
| -rw-r--r-- | src/xdisp.c | 18 |
1 files changed, 3 insertions, 15 deletions
diff --git a/src/xdisp.c b/src/xdisp.c index 19fef35fce8..91d1b6ea2e3 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -8373,22 +8373,10 @@ vmessage (const char *m, va_list ap) | |||
| 8373 | { | 8373 | { |
| 8374 | if (m) | 8374 | if (m) |
| 8375 | { | 8375 | { |
| 8376 | char *buf = FRAME_MESSAGE_BUF (f); | 8376 | size_t len; |
| 8377 | size_t bufsize = FRAME_MESSAGE_BUF_SIZE (f); | ||
| 8378 | int len; | ||
| 8379 | 8377 | ||
| 8380 | memset (buf, 0, bufsize); | 8378 | len = doprnt (FRAME_MESSAGE_BUF (f), |
| 8381 | len = vsnprintf (buf, bufsize, m, ap); | 8379 | FRAME_MESSAGE_BUF_SIZE (f), m, (char *)0, ap); |
| 8382 | |||
| 8383 | /* Do any truncation at a character boundary. */ | ||
| 8384 | if (! (0 <= len && len < bufsize)) | ||
| 8385 | { | ||
| 8386 | char *end = memchr (buf, 0, bufsize); | ||
| 8387 | for (len = end ? end - buf : bufsize; | ||
| 8388 | len && ! CHAR_HEAD_P (buf[len - 1]); | ||
| 8389 | len--) | ||
| 8390 | continue; | ||
| 8391 | } | ||
| 8392 | 8380 | ||
| 8393 | message2 (FRAME_MESSAGE_BUF (f), len, 0); | 8381 | message2 (FRAME_MESSAGE_BUF (f), len, 0); |
| 8394 | } | 8382 | } |