I now understand the source of the garbage: STRNCPY is not adding NUL byte if
it copied n bytes and there is no NUL in this n bytes. Everything was in the
man, I just had to reread it.
# HG changeset patch
# User ZyX <[email protected]>
# Date 1347095322 -14400
# Node ID 36b3878656262abb03c3cd98b116208569be58c4
# Parent 78b679bbe662f809323ea4127aa424627ab0d01d
Fixed garbage at the end of the message.
diff -r 78b679bbe662 -r 36b387865626 src/buffer.c
--- a/src/buffer.c Sat Sep 08 12:30:23 2012 +0400
+++ b/src/buffer.c Sat Sep 08 13:08:17 2012 +0400
@@ -3044,7 +3044,7 @@
char_u *buffer;
size_t len;
- buffer = alloc(IOSIZE);
+ buffer = alloc_clear(IOSIZE);
if (buffer == NULL)
return;
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
*** /tmp/extdiff.vQQpB7/vim.78b679bbe662/src/buffer.c 2012-09-08 13:08:31.000000000 +0400
--- vim.36b387865626/src/buffer.c 2012-09-08 13:08:32.000000000 +0400
***************
*** 3044,3050 ****
char_u *buffer;
size_t len;
! buffer = alloc(IOSIZE);
if (buffer == NULL)
return;
--- 3044,3050 ----
char_u *buffer;
size_t len;
! buffer = alloc_clear(IOSIZE);
if (buffer == NULL)
return;
*** /tmp/extdiff.ff8ZEk/vim.e75da4a3225d/src/buffer.c 2012-09-08 13:09:47.000000000 +0400
--- vim.36b387865626/src/buffer.c 2012-09-08 13:09:47.000000000 +0400
***************
*** 3044,3050 ****
char_u *buffer;
size_t len;
! buffer = alloc(IOSIZE);
if (buffer == NULL)
return;
--- 3044,3050 ----
char_u *buffer;
size_t len;
! buffer = alloc_clear(IOSIZE);
if (buffer == NULL)
return;
***************
*** 3058,3064 ****
*p++ = '"';
if (buf_spname(curbuf) != NULL)
! STRCPY(p, buf_spname(curbuf));
else
{
if (!fullname && curbuf->b_fname != NULL)
--- 3058,3064 ----
*p++ = '"';
if (buf_spname(curbuf) != NULL)
! STRNCPY(p, buf_spname(curbuf), IOSIZE - (p-buffer) - 1);
else
{
if (!fullname && curbuf->b_fname != NULL)