diff --git a/libc/src/string.c b/libc/src/string.c index 338ad17c..14cc4209 100644 --- a/libc/src/string.c +++ b/libc/src/string.c @@ -489,15 +489,14 @@ char *strcpy(char *dst, const char *src) size_t strlen(const char *s) { const char *it = s; - while (*(++it) != 0) {} - return ((it - s) < 0) ? 0 : (size_t)(it - s); + for (; *it; it++); + return (size_t)(it - s); } size_t strnlen(const char *s, size_t count) { - const char *it = s; - while ((*(++it) != 0) && --count) {} - return ((it - s) < 0) ? 0 : (size_t)(it - s); + const char *p = memchr(s, 0, count); + return p ? (size_t)(p-s) : count; } int strcmp(const char *s1, const char *s2) diff --git a/mentos/src/klib/string.c b/mentos/src/klib/string.c index 9f035312..7579da94 100644 --- a/mentos/src/klib/string.c +++ b/mentos/src/klib/string.c @@ -488,15 +488,14 @@ char *strcpy(char *dst, const char *src) size_t strlen(const char *s) { const char *it = s; - while (*(++it) != 0) {} - return ((it - s) < 0) ? 0 : (size_t)(it - s); + for(; *it; it++); + return (size_t)(it - s); } size_t strnlen(const char *s, size_t count) { - const char *it = s; - while ((*(++it) != 0) && --count) {} - return ((it - s) < 0) ? 0 : (size_t)(it - s); + const char *p = memchr(s, 0, count); + return p ? (size_t)(p-s) : count; } int strcmp(const char *s1, const char *s2)