]> git.eshelyaron.com Git - emacs.git/commitdiff
* xdisp.c (vmessage): Use a better test for character truncation.
authorPaul Eggert <eggert@cs.ucla.edu>
Sat, 9 Apr 2011 23:11:48 +0000 (16:11 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Sat, 9 Apr 2011 23:11:48 +0000 (16:11 -0700)
src/ChangeLog
src/xdisp.c

index b5e617b1f2061b6174e6fb5f322add0b7d6a8d59..3bd4fc1f4c0b86a6ffc004945fc28f2193051c93 100644 (file)
@@ -1,5 +1,7 @@
 2011-04-09  Paul Eggert  <eggert@cs.ucla.edu>
 
+       * xdisp.c (vmessage): Use a better test for character truncation.
+
        * charset.c (load_charset_map): <, not <=, for optimization,
        and to avoid potential problems with integer overflow.
        * chartab.c (sub_char_table_set_range, char_table_set_range): Likewise.
index b1209b998e26412bf90dae5b96cf20fe74029fb0..f37254419eb696dcfe12e4240bed7870aa521038 100644 (file)
@@ -8410,13 +8410,14 @@ vmessage (const char *m, va_list ap)
            {
              char *buf = FRAME_MESSAGE_BUF (f);
              size_t bufsize = FRAME_MESSAGE_BUF_SIZE (f);
-             int len = vsnprintf (buf, bufsize, m, ap);
-             if (len < 0)
-               len = 0;
+             int len;
+
+             memset (buf, 0, bufsize);
+             len = vsnprintf (buf, bufsize, m, ap);
 
              /* Do any truncation at a character boundary.  */
-             if (0 < bufsize && bufsize <= len)
-               for (len = bufsize - 1;
+             if (! (0 <= len && len < bufsize))
+               for (len = strnlen (buf, bufsize);
                     len && ! CHAR_HEAD_P (buf[len - 1]);
                     len--)
                  continue;
@@ -19495,7 +19496,7 @@ decode_mode_spec (struct window *w, register int c, int field_width,
            EMACS_INT limit = BUF_BEGV (b);
            EMACS_INT limit_byte = BUF_BEGV_BYTE (b);
            EMACS_INT position;
-           EMACS_INT distance = 
+           EMACS_INT distance =
              (height * 2 + 30) * line_number_display_limit_width;
 
            if (startpos - distance > limit)