aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/memory.c
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2024-05-24 19:18:11 +0000
committerJosh Rahm <joshuarahm@gmail.com>2024-05-24 19:18:11 +0000
commitff7ed8f586589d620a806c3758fac4a47a8e7e15 (patch)
tree729bbcb92231538fa61dab6c3d890b025484b7f5 /src/nvim/memory.c
parent376914f419eb08fdf4c1a63a77e1f035898a0f10 (diff)
parent28c04948a1c887a1cc0cb64de79fa32631700466 (diff)
downloadrneovim-ff7ed8f586589d620a806c3758fac4a47a8e7e15.tar.gz
rneovim-ff7ed8f586589d620a806c3758fac4a47a8e7e15.tar.bz2
rneovim-ff7ed8f586589d620a806c3758fac4a47a8e7e15.zip
Merge remote-tracking branch 'upstream/master' into mix_20240309
Diffstat (limited to 'src/nvim/memory.c')
-rw-r--r--src/nvim/memory.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/nvim/memory.c b/src/nvim/memory.c
index 37e53e4453..789535e270 100644
--- a/src/nvim/memory.c
+++ b/src/nvim/memory.c
@@ -202,7 +202,7 @@ void *xmallocz(size_t size)
}
void *ret = xmalloc(total_size);
- ((char *)ret)[size] = 0;
+ ((char *)ret)[size] = '\0';
return ret;
}
@@ -222,6 +222,20 @@ void *xmemdupz(const void *data, size_t len)
return memcpy(xmallocz(len), data, len);
}
+/// Copies `len` bytes of `src` to `dst` and zero terminates it.
+///
+/// @see {xstrlcpy}
+/// @param[out] dst Buffer to store the result.
+/// @param[in] src Buffer to be copied.
+/// @param[in] len Number of bytes to be copied.
+void *xmemcpyz(void *dst, const void *src, size_t len)
+ FUNC_ATTR_NONNULL_ALL FUNC_ATTR_NONNULL_RET
+{
+ memcpy(dst, src, len);
+ ((char *)dst)[len] = '\0';
+ return dst;
+}
+
#ifndef HAVE_STRNLEN
size_t xstrnlen(const char *s, size_t n)
FUNC_ATTR_NONNULL_ALL FUNC_ATTR_PURE