improved the speed somewhat

fixed bug with negative chars in comparisons
This commit is contained in:
eck
1990-08-28 13:54:46 +00:00
parent cd1f6c38a4
commit a41c51783a
17 changed files with 104 additions and 85 deletions

View File

@@ -12,18 +12,21 @@ memmove(void *s1, const void *s2, register size_t n)
register char *p1 = s1;
register const char *p2 = s2;
if (p2 <= p1 && p2 + (n-1) >= p1) {
/* overlap, copy backwards */
p1 += n;
p2 += n;
while (n > 0) {
n--;
*--p1 = *--p2;
}
} else
while (n > 0) {
n--;
*p1++ = *p2++;
if (n>0) {
if (p2 <= p1 && p2 + n > p1) {
/* overlap, copy backwards */
p1 += n;
p2 += n;
n++;
while (--n > 0) {
*--p1 = *--p2;
}
} else {
n++;
while (--n > 0) {
*p1++ = *p2++;
}
}
}
return s1;
}