diff --git a/src/pike_memory.c b/src/pike_memory.c
index 3bf4a64a1055323828e0565baf4610214e0a8f5b..d7778d29fd933aeb7f14ef8cb8c815b9b8eaa6a5 100644
--- a/src/pike_memory.c
+++ b/src/pike_memory.c
@@ -34,7 +34,7 @@ void swap(char *a, char *b, INT32 size)
   {
     tmp=MINIMUM((long)sizeof(tmpbuf), size);
     MEMCPY(tmpbuf,a,tmp);
-    MEMCPY(b,a,tmp);
+    MEMCPY(a,b,tmp);
     MEMCPY(b,tmpbuf,tmp);
     size-=tmp;
     a+=tmp;