diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | string/memccpy.c | 11 |
2 files changed, 9 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog index 5f40e4e015..65592c3e80 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2015-08-05 Wilco Dijkstra <wdijkstr@arm.com> + * string/memccpy.c (memccpy): + Improve performance by using memchr/memcpy/__mempcpy. + +2015-08-05 Wilco Dijkstra <wdijkstr@arm.com> + * string/strncpy.c (strncpy): Improve performance by using __strnlen/memcpy. diff --git a/string/memccpy.c b/string/memccpy.c index d9ed6975ef..0987c84aa0 100644 --- a/string/memccpy.c +++ b/string/memccpy.c @@ -26,15 +26,12 @@ void * __memccpy (void *dest, const void *src, int c, size_t n) { - const char *s = src; - char *d = dest; - const char x = c; - size_t i = n; + void *p = memchr (src, c, n); - while (i-- > 0) - if ((*d++ = *s++) == x) - return d; + if (p != NULL) + return __mempcpy (dest, src, p - src + 1); + memcpy (dest, src, n); return NULL; } |