Eric Biederman | 5cd8173 | 2004-03-11 15:01:31 +0000 | [diff] [blame] | 1 | #include <string.h> |
| 2 | void *memmove(void *vdest, const void *vsrc, size_t count) |
| 3 | { |
| 4 | const char *src = vsrc; |
| 5 | char *dest = vdest; |
Eric Biederman | 5cd8173 | 2004-03-11 15:01:31 +0000 | [diff] [blame] | 6 | |
| 7 | if (dest <= src) { |
Lee Leahy | 2f919ec | 2017-03-08 17:37:06 -0800 | [diff] [blame] | 8 | while (count--) |
Eric Biederman | 5cd8173 | 2004-03-11 15:01:31 +0000 | [diff] [blame] | 9 | *dest++ = *src++; |
Eric Biederman | 5cd8173 | 2004-03-11 15:01:31 +0000 | [diff] [blame] | 10 | } else { |
| 11 | src += count - 1; |
| 12 | dest += count - 1; |
Lee Leahy | 45fde70 | 2017-03-08 18:02:24 -0800 | [diff] [blame] | 13 | while (count--) |
Eric Biederman | 5cd8173 | 2004-03-11 15:01:31 +0000 | [diff] [blame] | 14 | *dest-- = *src--; |
Eric Biederman | 5cd8173 | 2004-03-11 15:01:31 +0000 | [diff] [blame] | 15 | } |
| 16 | return vdest; |
| 17 | } |