aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/strings.c
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2017-01-26 14:33:03 +0100
committerGitHub <noreply@github.com>2017-01-26 14:33:03 +0100
commit59fd0c4132f06a76c460f46ec93fce7b7f1d6f08 (patch)
tree0a6eaf861fa7406c9cd06ffd61dc37e84b051975 /src/nvim/strings.c
parentf78982620a48dc76bbd3635300650d06ced24aab (diff)
downloadrneovim-59fd0c4132f06a76c460f46ec93fce7b7f1d6f08.tar.gz
rneovim-59fd0c4132f06a76c460f46ec93fce7b7f1d6f08.tar.bz2
rneovim-59fd0c4132f06a76c460f46ec93fce7b7f1d6f08.zip
refactor: Remove strncpy/STRNCPY. (#6008)
Closes #731 References #851 Note: This does not remove some intentional legacy usages of strncpy. - memcpy isn't equivalent because it doesn't check the string length of `src`, and doesn't zero-out the remainder of `dst`. - xstrlcpy isn't equivalent because it doesn't zero-out the remainder of `dst`. Some Vim logic depends on that (e.g. ex_append which calls vim_strnsave). Helped-by: Douglas Schneider <ds3@ualberta.ca> Helped-by: oni-link <knil.ino@gmail.com> Helped-by: James McCoy <jamessan@jamessan.com>
Diffstat (limited to 'src/nvim/strings.c')
-rw-r--r--src/nvim/strings.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/nvim/strings.c b/src/nvim/strings.c
index 5b4f23f30e..b38d4f8a58 100644
--- a/src/nvim/strings.c
+++ b/src/nvim/strings.c
@@ -51,15 +51,14 @@ char_u *vim_strsave(const char_u *string)
return (char_u *)xstrdup((char *)string);
}
-/*
- * Copy up to "len" bytes of "string" into newly allocated memory and
- * terminate with a NUL.
- * The allocated memory always has size "len + 1", also when "string" is
- * shorter.
- */
+/// Copy up to `len` bytes of `string` into newly allocated memory and
+/// terminate with a NUL. The allocated memory always has size `len + 1`, even
+/// when `string` is shorter.
char_u *vim_strnsave(const char_u *string, size_t len)
FUNC_ATTR_NONNULL_RET FUNC_ATTR_MALLOC FUNC_ATTR_NONNULL_ALL
{
+ // strncpy is intentional: some parts of Vim use `string` shorter than `len`
+ // and expect the remainder to be zeroed out.
return (char_u *)strncpy(xmallocz(len), (char *)string, len);
}