From: Rich Felker Date: Mon, 23 May 2011 01:58:43 +0000 (-0400) Subject: fix strncat and wcsncat (double null termination) X-Git-Tag: v0.7.11~86 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=86339bc4ba69ca5c88fd5570875cf17a275bd019;p=oweals%2Fmusl.git fix strncat and wcsncat (double null termination) also modify wcsncpy to use the same loop logic --- diff --git a/src/string/strncat.c b/src/string/strncat.c index 255b7a72..08685ad6 100644 --- a/src/string/strncat.c +++ b/src/string/strncat.c @@ -4,7 +4,7 @@ char *strncat(char *d, const char *s, size_t n) { char *a = d; d += strlen(d); - while (n && (*d++ = *s++)) n--; + while (n && *s) n--, *d++ = *s++; *d++ = 0; return a; } diff --git a/src/string/wcsncat.c b/src/string/wcsncat.c index b07abe45..9d61bbbd 100644 --- a/src/string/wcsncat.c +++ b/src/string/wcsncat.c @@ -4,7 +4,7 @@ wchar_t *wcsncat(wchar_t *d, const wchar_t *s, size_t n) { wchar_t *a = d; d += wcslen(d); - while (n && (*d++ = *s++)) n--; + while (n && *s) n--, *d++ = *s++; *d++ = 0; return a; } diff --git a/src/string/wcsncpy.c b/src/string/wcsncpy.c index 9f68a004..714eeb64 100644 --- a/src/string/wcsncpy.c +++ b/src/string/wcsncpy.c @@ -3,7 +3,7 @@ wchar_t *wcsncpy(wchar_t *d, const wchar_t *s, size_t n) { wchar_t *a = d; - for (; n && (*d = *s); n--, d++, s++); + while (n && *s) n--, *d++ = *s++; wmemset(d, 0, n); return a; }