--- ../klibc-0.177/klibc/strncpy.c 2004-08-26 08:03:41.000000000 +0200 +++ klibc/klibc/strncpy.c 2004-09-17 19:07:28.936701652 +0200 @@ -10,7 +10,8 @@ char *strncpy(char *dst, const char *src const char *p = src; char ch; - while ( n-- ) { + while (n) { + n--; *q++ = ch = *p++; if ( !ch ) break; --- ../klibc-0.177/klibc/strncat.c 2004-08-26 08:03:41.000000000 +0200 +++ klibc/klibc/strncat.c 2004-09-17 21:02:33.004357774 +0200 @@ -8,13 +8,18 @@ char *strncat(char *dst, const char *src, size_t n) { char *q = strchr(dst, '\0'); + const char *p = src; + char ch; size_t nn = q-dst; if ( __likely(nn <= n) ) - n = nn; + n -= nn; - memcpy(q, src, n); - q[n] = '\0'; + while (n--) { + *q++ = ch = *p++; + if ( !ch ) + break; + } return dst; }