diff options
author | Rich Felker <dalias@aerifal.cx> | 2011-05-22 21:58:43 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2011-05-22 21:58:43 -0400 |
commit | 86339bc4ba69ca5c88fd5570875cf17a275bd019 (patch) | |
tree | 78764a0930c77dfb1a9763b00b8bffca27293abb | |
parent | e98136207ad1a6df1cdc1578e4ad56f8f0db4047 (diff) | |
download | musl-86339bc4ba69ca5c88fd5570875cf17a275bd019.tar.gz musl-86339bc4ba69ca5c88fd5570875cf17a275bd019.tar.bz2 musl-86339bc4ba69ca5c88fd5570875cf17a275bd019.tar.xz musl-86339bc4ba69ca5c88fd5570875cf17a275bd019.zip |
fix strncat and wcsncat (double null termination)
also modify wcsncpy to use the same loop logic
-rw-r--r-- | src/string/strncat.c | 2 | ||||
-rw-r--r-- | src/string/wcsncat.c | 2 | ||||
-rw-r--r-- | 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; } |