提交 594318fd 编写于 作者: R Rich Felker

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.
上级 fcfba995
......@@ -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;
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册