X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Flib.c;h=73b6432e00b616f56f44ce84148fbd1ef7e921b3;hb=e2256d66964923bc4c01ac067b7cbb7544429051;hp=4d65108a24918473de524516d98df6b44381acfc;hpb=972dd5ead02b18dae9eb9e0fa4ce1b8d7fd1f54a;p=tpg%2Facess2.git diff --git a/Kernel/lib.c b/Kernel/lib.c index 4d65108a..73b6432e 100644 --- a/Kernel/lib.c +++ b/Kernel/lib.c @@ -960,12 +960,19 @@ void *memmove(void *__dest, const void *__src, size_t len) char *dest = __dest; const char *src = __src; void *ret = __dest; + + if( len == 0 || dest == src ) + return dest; if( (tVAddr)dest > (tVAddr)src + len ) return memcpy(dest, src, len); if( (tVAddr)dest + len < (tVAddr)src ) return memcpy(dest, src, len); + // NOTE: Assumes memcpy works forward + if( (tVAddr)dest < (tVAddr)src ) + return memcpy(dest, src, len); + if( (tVAddr)dest < (tVAddr)src ) block_size = (tVAddr)src - (tVAddr)dest; else