Skip to content

Commit bb508c7

Browse files
committed
Merge PR #32 memmove shim
2 parents 18a2486 + d386e17 commit bb508c7

2 files changed

Lines changed: 22 additions & 0 deletions

File tree

src/mem.c

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,27 @@ void *memcpy(void *dst, const void *src, size_t n) {
1010
return dst;
1111
}
1212

13+
void *memmove(void *dst, const void *src, size_t n) {
14+
unsigned char *d = (unsigned char *)dst;
15+
const unsigned char *s = (const unsigned char *)src;
16+
17+
if (d == s || n == 0) {
18+
return dst;
19+
}
20+
21+
if (d < s) {
22+
while (n--)
23+
*d++ = *s++;
24+
} else {
25+
d += n;
26+
s += n;
27+
while (n--)
28+
*--d = *--s;
29+
}
30+
31+
return dst;
32+
}
33+
1334
void *memset(void *dst, int c, size_t n) {
1435
unsigned char *d = (unsigned char *)dst;
1536
while (n--)

src/mem.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
typedef __SIZE_TYPE__ size_t;
77

88
void *memcpy(void *dst, const void *src, size_t n);
9+
void *memmove(void *dst, const void *src, size_t n);
910
void *memset(void *dst, int c, size_t n);
1011
size_t strlen(const char *s);
1112
int align8(int n);

0 commit comments

Comments
 (0)