From d386e178374b8e60e5311fe594c3972564017dee Mon Sep 17 00:00:00 2001 From: Ryan Rauh Date: Sat, 9 May 2026 09:29:30 -0400 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20add=20memmove=20shim=20for=20was?= =?UTF-8?q?m=20builds?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/mem.c | 21 +++++++++++++++++++++ src/mem.h | 1 + 2 files changed, 22 insertions(+) diff --git a/src/mem.c b/src/mem.c index 3a0895a..f5254e7 100644 --- a/src/mem.c +++ b/src/mem.c @@ -10,6 +10,27 @@ void *memcpy(void *dst, const void *src, size_t n) { return dst; } +void *memmove(void *dst, const void *src, size_t n) { + unsigned char *d = (unsigned char *)dst; + const unsigned char *s = (const unsigned char *)src; + + if (d == s || n == 0) { + return dst; + } + + if (d < s) { + while (n--) + *d++ = *s++; + } else { + d += n; + s += n; + while (n--) + *--d = *--s; + } + + return dst; +} + void *memset(void *dst, int c, size_t n) { unsigned char *d = (unsigned char *)dst; while (n--) diff --git a/src/mem.h b/src/mem.h index 0a11d96..172c4cd 100644 --- a/src/mem.h +++ b/src/mem.h @@ -6,6 +6,7 @@ typedef __SIZE_TYPE__ size_t; void *memcpy(void *dst, const void *src, size_t n); +void *memmove(void *dst, const void *src, size_t n); void *memset(void *dst, int c, size_t n); size_t strlen(const char *s); int align8(int n);