msvcrt: Copy memmove implementation from ntdll.

Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Piotr Caban 2020-07-22 11:10:26 +02:00 committed by Alexandre Julliard
parent 773f0a835b
commit f02193738c
1 changed files with 22 additions and 9 deletions

View File

@ -2229,20 +2229,33 @@ int __cdecl MSVCRT_memcmp(const void *ptr1, const void *ptr2, MSVCRT_size_t n)
return 0;
}
/*********************************************************************
* memcpy (MSVCRT.@)
*/
void * __cdecl MSVCRT_memcpy(void *dst, const void *src, MSVCRT_size_t n)
{
return memmove(dst, src, n);
}
/*********************************************************************
* memmove (MSVCRT.@)
*/
void * __cdecl MSVCRT_memmove(void *dst, const void *src, MSVCRT_size_t n)
{
return memmove(dst, src, n);
volatile unsigned char *d = dst; /* avoid gcc optimizations */
const unsigned char *s = src;
if ((MSVCRT_size_t)dst - (MSVCRT_size_t)src >= n)
{
while (n--) *d++ = *s++;
}
else
{
d += n - 1;
s += n - 1;
while (n--) *d-- = *s--;
}
return dst;
}
/*********************************************************************
* memcpy (MSVCRT.@)
*/
void * __cdecl MSVCRT_memcpy(void *dst, const void *src, MSVCRT_size_t n)
{
return MSVCRT_memmove(dst, src, n);
}
/*********************************************************************