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; }