summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2011-04-28 07:46:40 -0400
committerEli Zaretskii <eliz@gnu.org>2011-04-28 07:46:40 -0400
commitd178f871644d97853be0f89d05a8fc5649e5d620 (patch)
tree0fd59c73c419b09cc1498663d68ee51c607e677c
parentb124fd93b090f840e30ad1fd9a9cbf1858c74342 (diff)
downloademacs-d178f871644d97853be0f89d05a8fc5649e5d620.tar.gz
emacs-d178f871644d97853be0f89d05a8fc5649e5d620.tar.bz2
emacs-d178f871644d97853be0f89d05a8fc5649e5d620.zip
Fix return value from doprnt when message is truncated at non-ASCII character.
src/doprnt.c (doprnt): Don't return value smaller than the buffer size if the message was truncated. (Bug#8545).
-rw-r--r--src/ChangeLog5
-rw-r--r--src/doprnt.c4
2 files changed, 8 insertions, 1 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 91777751853..107d6f0073a 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -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)
diff --git a/src/doprnt.c b/src/doprnt.c
index a6becc7454f..63dba9f5850 100644
--- a/src/doprnt.c
+++ b/src/doprnt.c
@@ -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;
}
}