aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/memory.c
diff options
context:
space:
mode:
authorNicolas Hillegeer <nicolas@hillegeer.com>2014-05-24 15:02:13 +0200
committerThiago de Arruda <tpadilha84@gmail.com>2014-05-26 13:08:45 -0300
commita50a34f4723b23d1846f7b71c4584dbda7cf579a (patch)
tree7aaf37adb5ed2a33e958bae024fe9f8867ce4546 /src/nvim/memory.c
parent3a68a4861adcc950cdbde709d4841f8ea0c52b12 (diff)
downloadrneovim-a50a34f4723b23d1846f7b71c4584dbda7cf579a.tar.gz
rneovim-a50a34f4723b23d1846f7b71c4584dbda7cf579a.tar.bz2
rneovim-a50a34f4723b23d1846f7b71c4584dbda7cf579a.zip
memory: add xstrlcpy
Less "blow a hole in your foot" than strncpy. As also indicated by coverity. Implementation inspired by the linux kernel (very similar to OSX's Libc implementation as well).
Diffstat (limited to 'src/nvim/memory.c')
-rw-r--r--src/nvim/memory.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/nvim/memory.c b/src/nvim/memory.c
index b6990890a6..238a6791c0 100644
--- a/src/nvim/memory.c
+++ b/src/nvim/memory.c
@@ -183,6 +183,19 @@ char *xstpncpy(char *restrict dst, const char *restrict src, size_t maxlen)
}
}
+size_t xstrlcpy(char *restrict dst, const char *restrict src, size_t size)
+{
+ size_t ret = strlen(src);
+
+ if (size) {
+ size_t len = (ret >= size) ? size - 1 : ret;
+ memcpy(dst, src, len);
+ dst[len] = '\0';
+ }
+
+ return ret;
+}
+
char *xstrdup(const char *str)
{
char *ret = strdup(str);