From 86339bc4ba69ca5c88fd5570875cf17a275bd019 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Sun, 22 May 2011 21:58:43 -0400 Subject: [PATCH] fix strncat and wcsncat (double null termination) also modify wcsncpy to use the same loop logic --- src/string/strncat.c | 2 +- src/string/wcsncat.c | 2 +- src/string/wcsncpy.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) 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; } -- 2.25.1