diff options
author | Nicolas Hillegeer <nicolas@hillegeer.com> | 2014-05-24 15:02:13 +0200 |
---|---|---|
committer | Thiago de Arruda <tpadilha84@gmail.com> | 2014-05-26 13:08:45 -0300 |
commit | a50a34f4723b23d1846f7b71c4584dbda7cf579a (patch) | |
tree | 7aaf37adb5ed2a33e958bae024fe9f8867ce4546 /src/nvim/memory.c | |
parent | 3a68a4861adcc950cdbde709d4841f8ea0c52b12 (diff) | |
download | rneovim-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.c | 13 |
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); |