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