diff options
| author | Paul Eggert | 2011-04-09 16:11:48 -0700 |
|---|---|---|
| committer | Paul Eggert | 2011-04-09 16:11:48 -0700 |
| commit | 7d66342ce292392fea0d53e343ec07119ee2d1b8 (patch) | |
| tree | 541d45ae28299d59b89af5e573730fa8c754b425 /src | |
| parent | 1e69125eae782c27b700990bc83a982646ca8ba2 (diff) | |
| download | emacs-7d66342ce292392fea0d53e343ec07119ee2d1b8.tar.gz emacs-7d66342ce292392fea0d53e343ec07119ee2d1b8.zip | |
* xdisp.c (vmessage): Use a better test for character truncation.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 2 | ||||
| -rw-r--r-- | src/xdisp.c | 13 |
2 files changed, 9 insertions, 6 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index b5e617b1f20..3bd4fc1f4c0 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,5 +1,7 @@ | |||
| 1 | 2011-04-09 Paul Eggert <eggert@cs.ucla.edu> | 1 | 2011-04-09 Paul Eggert <eggert@cs.ucla.edu> |
| 2 | 2 | ||
| 3 | * xdisp.c (vmessage): Use a better test for character truncation. | ||
| 4 | |||
| 3 | * charset.c (load_charset_map): <, not <=, for optimization, | 5 | * charset.c (load_charset_map): <, not <=, for optimization, |
| 4 | and to avoid potential problems with integer overflow. | 6 | and to avoid potential problems with integer overflow. |
| 5 | * chartab.c (sub_char_table_set_range, char_table_set_range): Likewise. | 7 | * chartab.c (sub_char_table_set_range, char_table_set_range): Likewise. |
diff --git a/src/xdisp.c b/src/xdisp.c index b1209b998e2..f37254419eb 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -8410,13 +8410,14 @@ vmessage (const char *m, va_list ap) | |||
| 8410 | { | 8410 | { |
| 8411 | char *buf = FRAME_MESSAGE_BUF (f); | 8411 | char *buf = FRAME_MESSAGE_BUF (f); |
| 8412 | size_t bufsize = FRAME_MESSAGE_BUF_SIZE (f); | 8412 | size_t bufsize = FRAME_MESSAGE_BUF_SIZE (f); |
| 8413 | int len = vsnprintf (buf, bufsize, m, ap); | 8413 | int len; |
| 8414 | if (len < 0) | 8414 | |
| 8415 | len = 0; | 8415 | memset (buf, 0, bufsize); |
| 8416 | len = vsnprintf (buf, bufsize, m, ap); | ||
| 8416 | 8417 | ||
| 8417 | /* Do any truncation at a character boundary. */ | 8418 | /* Do any truncation at a character boundary. */ |
| 8418 | if (0 < bufsize && bufsize <= len) | 8419 | if (! (0 <= len && len < bufsize)) |
| 8419 | for (len = bufsize - 1; | 8420 | for (len = strnlen (buf, bufsize); |
| 8420 | len && ! CHAR_HEAD_P (buf[len - 1]); | 8421 | len && ! CHAR_HEAD_P (buf[len - 1]); |
| 8421 | len--) | 8422 | len--) |
| 8422 | continue; | 8423 | continue; |
| @@ -19495,7 +19496,7 @@ decode_mode_spec (struct window *w, register int c, int field_width, | |||
| 19495 | EMACS_INT limit = BUF_BEGV (b); | 19496 | EMACS_INT limit = BUF_BEGV (b); |
| 19496 | EMACS_INT limit_byte = BUF_BEGV_BYTE (b); | 19497 | EMACS_INT limit_byte = BUF_BEGV_BYTE (b); |
| 19497 | EMACS_INT position; | 19498 | EMACS_INT position; |
| 19498 | EMACS_INT distance = | 19499 | EMACS_INT distance = |
| 19499 | (height * 2 + 30) * line_number_display_limit_width; | 19500 | (height * 2 + 30) * line_number_display_limit_width; |
| 19500 | 19501 | ||
| 19501 | if (startpos - distance > limit) | 19502 | if (startpos - distance > limit) |