update for HEAD-2003050101
[reactos.git] / lib / ntdll / string / memmove.c
1 #include <string.h>
2
3 void * memmove(void *dest,const void *src,size_t count)
4 {
5         char *char_dest = (char *)dest;
6         char *char_src = (char *)src;
7
8         if ((char_dest <= char_src) || (char_dest >= (char_src+count)))
9         {
10                 /*  non-overlapping buffers */
11                 while(count > 0)
12                 {
13                         *char_dest = *char_src;
14                         char_dest++;
15                         char_src++;
16                         count--;
17                 }
18         }
19         else
20         {
21                 /* overlaping buffers */
22                 char_dest = (char *)dest + count - 1;
23                 char_src = (char *)src + count - 1;
24
25                 while(count > 0)
26                 {
27                         *char_dest = *char_src;
28                         char_dest--;
29                         char_src--;
30                         count--;
31                 }
32         }
33
34         return dest;
35 }
36