From dc4f43eeb08b126ec1a72661fee9a2286b280553 Mon Sep 17 00:00:00 2001 From: Romain Goyet Date: Thu, 13 Feb 2020 16:03:32 -0500 Subject: [PATCH] [liba] Improve strlcpy Use memcpy (can be optimized) and return the correct size --- liba/src/strlcpy.c | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/liba/src/strlcpy.c b/liba/src/strlcpy.c index b8e1a9422..d1012ce43 100644 --- a/liba/src/strlcpy.c +++ b/liba/src/strlcpy.c @@ -1,17 +1,12 @@ #include size_t strlcpy(char * dst, const char * src, size_t dstSize) { - if (dstSize == 0) { - return strlen(src); + const size_t srcLen = strlen(src); + if (srcLen+1 < dstSize) { + memcpy(dst, src, srcLen+1); + } else if (dstSize != 0) { + memcpy(dst, src, dstSize-1); + dst[dstSize-1] = 0; } - const char * cur = src; - const char * end = src+dstSize-1; - while (*cur != 0 && cur < end) { - *dst++ = *cur++; - } - *dst = 0; - while (*cur != 0) { - cur++; - } - return cur-src; + return srcLen; }