diff options
Diffstat (limited to 'newlib/libc/string/memccpy.c')
-rw-r--r-- | newlib/libc/string/memccpy.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/newlib/libc/string/memccpy.c b/newlib/libc/string/memccpy.c index f677ac02e..a6f45e8b3 100644 --- a/newlib/libc/string/memccpy.c +++ b/newlib/libc/string/memccpy.c @@ -92,12 +92,11 @@ _DEFUN (memccpy, (dst0, src0, endchar, len0), _CONST char *src = src0; long *aligned_dst; _CONST long *aligned_src; - int len = len0; char endchar = endchar0 & 0xff; /* If the size is small, or either SRC or DST is unaligned, then punt into the byte copy loop. This should be rare. */ - if (!TOO_SMALL(len) && !UNALIGNED (src, dst)) + if (!TOO_SMALL(len0) && !UNALIGNED (src, dst)) { int i; unsigned long mask = 0; @@ -116,14 +115,14 @@ _DEFUN (memccpy, (dst0, src0, endchar, len0), /* Copy one long word at a time if possible. */ - while (len >= LITTLEBLOCKSIZE) + while (len0 >= LITTLEBLOCKSIZE) { unsigned long buffer = (unsigned long)(*aligned_src); buffer ^= mask; if (DETECTNULL (buffer)) break; /* endchar is found, go byte by byte from here */ *aligned_dst++ = *aligned_src++; - len -= LITTLEBLOCKSIZE; + len0 -= LITTLEBLOCKSIZE; } /* Pick up any residual with a byte copier. */ @@ -131,7 +130,7 @@ _DEFUN (memccpy, (dst0, src0, endchar, len0), src = (char*)aligned_src; } - while (len--) + while (len0--) { if ((*dst++ = *src++) == endchar) { |