diff --git a/src/port.c b/src/port.c
index f7591cf49421e2b1fa10f169f967d7427b3c0361..3f2e45e0ad4745be5fb0f8a6024b4d2f37ca9b78 100644
--- a/src/port.c
+++ b/src/port.c
@@ -184,8 +184,11 @@ void MEMMOVE(void *b,const void *aa,int s)
 {
   char *t=(char *)b;
   char *a=(char *)aa;
-  if(a>b) for(;s;s--) *(t++)=*(a++);
-  if(a<b) for(t+=s,a+=s;s;s--) *(--t)=*(--a);
+  if(a>t)
+    for(;s;s--) *(t++)=*(a++);
+  else
+    if(a<t)
+      for(t+=s,a+=s;s;s--) *(--t)=*(--a);
 }
 #endif