blob: 21c725645466338c76ae349456c2e9dcbb986d6f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#include "string.h"
void* memmove(void* dst, const void* src, size_t size) {
unsigned char* _dst = dst;
const unsigned char* _src = src;
register size_t rem;
if (_dst == _src) {
return dst;
}
if (_dst < _src) {
for (rem = size--; rem != 0; rem = size--) {
*_dst++ = *_src++;
}
} else {
_dst += size - 1;
_src += size - 1;
for (rem = size--; rem != 0; rem = size--) {
*_dst-- = *_src--;
}
}
return dst;
}
|