Fix return value from doprnt when message is truncated at non-ASCII character.
authorEli Zaretskii <eliz@gnu.org>
Thu, 28 Apr 2011 11:46:40 +0000 (07:46 -0400)
committerEli Zaretskii <eliz@gnu.org>
Thu, 28 Apr 2011 11:46:40 +0000 (07:46 -0400)
 src/doprnt.c (doprnt): Don't return value smaller than the buffer
 size if the message was truncated.  (Bug#8545).

src/ChangeLog
src/doprnt.c

index 9177775..107d6f0 100644 (file)
@@ -1,3 +1,8 @@
+2011-04-28  Eli Zaretskii  <eliz@gnu.org>
+
+       * doprnt.c (doprnt): Don't return value smaller than the buffer
+       size if the message was truncated.  (Bug#8545).
+
 2011-04-28  Juanma Barranquero  <lekktu@gmail.com>
 
        * w32fns.c (Fx_change_window_property, Fx_delete_window_property)
index a6becc7..63dba9f 100644 (file)
@@ -403,7 +403,9 @@ doprnt (char *buffer, register size_t bufsize, const char *format,
        while (fmt < format_end && --bufsize > 0 && !CHAR_HEAD_P (*fmt));
        if (!CHAR_HEAD_P (*fmt))
          {
-           bufptr = save_bufptr;
+           /* Truncate, but return value that will signal to caller
+              that the buffer was too small.  */
+           *save_bufptr = 0;
            break;
          }
       }