From e44cb1a35c4bf3f30e2b9e3961c57b7ca6fa7849 Mon Sep 17 00:00:00 2001 From: rich cannings Date: Tue, 31 Aug 2010 15:19:38 -0700 Subject: Fix return value. Return a valid pointer (not NULL) when the character "c" is at the end of "src". Change-Id: Iab0b677943f2c8a9fbb255c44689f5d6dc3535d7 Example: memccpy(dest, "xzy", 'y', 3) should return dest+3 rather than null. --- libc/string/memccpy.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/libc/string/memccpy.c b/libc/string/memccpy.c index 2689e80..789fde6 100644 --- a/libc/string/memccpy.c +++ b/libc/string/memccpy.c @@ -38,18 +38,9 @@ void *memccpy(void *dst, const void *src, int c, size_t n) for (;;) { if (ch == c || p >= p_end) break; *q++ = ch = *p++; - - if (ch == c || p >= p_end) break; - *q++ = ch = *p++; - - if (ch == c || p >= p_end) break; - *q++ = ch = *p++; - - if (ch == c || p >= p_end) break; - *q++ = ch = *p++; } - if (p >= p_end) + if (p >= p_end && ch != c) return NULL; return q; -- cgit v1.1