memmove.c 288 B

1234567891011121314
  1. #include <string.h>
  2. void *memmove(void *dest, const void *src, size_t n)
  3. {
  4. char *d = dest;
  5. const char *s = src;
  6. if (d==s) return d;
  7. if ((size_t)(d-s) < n) {
  8. while (n--) d[n] = s[n];
  9. return dest;
  10. }
  11. /* Assumes memcpy is overlap-safe when dest < src */
  12. return memcpy(d, s, n);
  13. }