mirror of
https://git.musl-libc.org/git/musl
synced 2025-02-22 05:04:20 +03:00
remove dependency of memmove on memcpy direction
this commit introduces a performance regression in many uses of memmove, which will need to be addressed before the next release. i'm making it as a temporary measure so that the restrict patch can be committed without invoking undefined behavior when memmove calls memcpy with overlapping regions.
This commit is contained in:
parent
fcfba99503
commit
594318fd3d
@ -5,10 +5,9 @@ void *memmove(void *dest, const void *src, size_t n)
|
||||
char *d = dest;
|
||||
const char *s = src;
|
||||
if (d==s) return d;
|
||||
if ((size_t)(d-s) < n) {
|
||||
if ((size_t)(d-s) < n)
|
||||
while (n--) d[n] = s[n];
|
||||
return dest;
|
||||
}
|
||||
/* Assumes memcpy is overlap-safe when dest < src */
|
||||
return memcpy(d, s, n);
|
||||
else
|
||||
while (n--) *d++ = *s++;
|
||||
return dest;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user