Explorar o código

LibC: Support backwards copy in memmove().

Andreas Kling %!s(int64=6) %!d(string=hai) anos
pai
achega
c7ded89f05
Modificáronse 1 ficheiros con 6 adicións e 2 borrados
  1. 6 2
      LibC/string.cpp

+ 6 - 2
LibC/string.cpp

@@ -141,8 +141,12 @@ void* memmove(void* dest, const void* src, size_t n)
 {
     if (dest < src)
         return memcpy(dest, src, n);
-    // FIXME: Implement backwards copy.
-    assert(false);
+
+    byte *pd = (byte*)dest;
+    const byte *ps = (const byte*)src;
+    for (pd += n, ps += n; n--;)
+        *--pd = *--ps;
+    return dest;
 }
 
 char* strcpy(char* dest, const char *src)