| //------------------------------------------------------------------------------ | |
| // | |
| // Copyright (c) 2019, Pete Batard. All rights reserved. | |
| // | |
| // SPDX-License-Identifier: BSD-2-Clause-Patent | |
| // | |
| //------------------------------------------------------------------------------ | |
| #if defined(_M_ARM64) | |
| typedef unsigned __int64 size_t; | |
| #else | |
| typedef unsigned __int32 size_t; | |
| #endif | |
| void* memmove(void *, const void *, size_t); | |
| #pragma intrinsic(memmove) | |
| #pragma function(memmove) | |
| void* memmove(void *dest, const void *src, size_t n) | |
| { | |
| unsigned char *d = dest; | |
| unsigned char const *s = src; | |
| if (d < s) { | |
| while (n--) | |
| *d++ = *s++; | |
| } else { | |
| d += n; | |
| s += n; | |
| while (n--) | |
| *--d = *--s; | |
| } | |
| return dest; | |
| } |