aboutsummaryrefslogtreecommitdiff
path: root/src/base/mem/move.c
blob: 5ad40743b1441139f99f576c256d954e5278d283 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "internal.h"

int
memยทmove(void *dst, void *src, uintptr len)
{
    char *d, *s;
    if((long)len < 0)
        return 1;

    d=dst, s=src;
    if((s < d) && (s+len > d))
        goto aliased;
    while(len-- > 0)
        *d++ = *s++;
    return 0;

aliased:
    d+=len, s+=len;
    while(len-- > 0)
        *--d = *--s;
    return 0;
}