15 lines
288 B
C
15 lines
288 B
C
|
#include <string.h>
|
||
|
|
||
|
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) {
|
||
|
while (n--) d[n] = s[n];
|
||
|
return dest;
|
||
|
}
|
||
|
/* Assumes memcpy is overlap-safe when dest < src */
|
||
|
return memcpy(d, s, n);
|
||
|
}
|