From f7f1e3cfa25cf95e15bac30e6934d5a534ceca08 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Tue, 3 Sep 2019 17:07:58 -0400 Subject: dstring: New dstrndup() function --- dstring.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'dstring.c') diff --git a/dstring.c b/dstring.c index d7ce456..8b226bc 100644 --- a/dstring.c +++ b/dstring.c @@ -49,7 +49,10 @@ static char *dstralloc_impl(size_t capacity, size_t length, const char *data) { header->capacity = capacity; header->length = length; - return memcpy(header->data, data, length + 1); + + memcpy(header->data, data, length); + header->data[length] = '\0'; + return header->data; } char *dstralloc(size_t capacity) { @@ -61,6 +64,11 @@ char *dstrdup(const char *str) { return dstralloc_impl(len, len, str); } +char *dstrndup(const char *str, size_t n) { + size_t len = strnlen(str, n); + return dstralloc_impl(len, len, str); +} + size_t dstrlen(const char *dstr) { return dstrheader(dstr)->length; } -- cgit v1.2.3