diff --git a/src/array.c b/src/array.c
index 005c46c5efa0d0b0e1c33ffef3d02037a9417ef7..e3650b9a43c43a665ea797e8d39496c1d52aeac0 100644
--- a/src/array.c
+++ b/src/array.c
@@ -399,13 +399,10 @@ PMOD_EXPORT struct array *array_insert(struct array *v,struct svalue *s,INT32 in
     if ((v->item != v->real_item) &&
 	(((index<<1) < v->size) ||
 	 ((v->item + v->size) == (v->real_item + v->malloced_size)))) {
-      memmove((char *)(ITEM(v)-1),
-	      (char *)(ITEM(v)),
-	      index * sizeof(struct svalue));
+      memmove(ITEM(v)-1, ITEM(v), index * sizeof(struct svalue));
       v->item--;
     } else {
-      memmove((char *)(ITEM(v)+index+1),
-	      (char *)(ITEM(v)+index),
+      memmove(ITEM(v)+index+1, ITEM(v)+index,
 	      (v->size-index) * sizeof(struct svalue));
     }
     assert_free_svalue (ITEM(v) + index);
@@ -649,8 +646,7 @@ PMOD_EXPORT struct array *array_remove(struct array *v,INT32 index)
   } else {
     if(v->size-index>1)
     {
-      memmove((char *)(ITEM(v)+index),
-	      (char *)(ITEM(v)+index+1),
+      memmove(ITEM(v)+index, ITEM(v)+index+1,
 	      (v->size-index-1)*sizeof(struct svalue));
     }
     v->size--;
@@ -1700,8 +1696,8 @@ PMOD_EXPORT struct array *add_arrays(struct svalue *argp, INT32 args)
     if (v2) {
       debug_malloc_touch(v2);
       mark_free_svalue(argp + e2);
-      memmove((char *)(v2->real_item + tmp2), (char *)ITEM(v2),
-	      v2->size * sizeof(struct svalue));
+      memmove(v2->real_item + tmp2, ITEM(v2),
+              v2->size * sizeof(struct svalue));
       v2->item = v2->real_item + tmp2;
       for(tmp=e2-1;tmp>=0;tmp--)
       {
diff --git a/src/builtin.cmod b/src/builtin.cmod
index 9c1a98dd94cc105a8658de2d8792453ac692e352..e343435720f666a8a280a5e7067d03127baaedc6 100644
--- a/src/builtin.cmod
+++ b/src/builtin.cmod
@@ -3446,7 +3446,7 @@ PIKECLASS Buffer
       s2->str[len] = 0;				// Ensure NUL-termination
       s2->len = index;
     }
-    memmove(p, (char*)p+len, end<<shift); // Copy NUL-termination
+    memmove(p, p+len, end<<shift); // Copy NUL-termination
     if( s->flags & STRING_CLEAR_ON_EXIT)
       guaranteed_memset(p+len+(end<<shift) , 0, len );
     s->len -= index;
diff --git a/src/post_modules/_ADT/circular_list.cmod b/src/post_modules/_ADT/circular_list.cmod
index acaac999e5b09501c0e3a32eba38e096b8e41e46..491d90f04427ab6fead442db093cd286399c0fb7 100644
--- a/src/post_modules/_ADT/circular_list.cmod
+++ b/src/post_modules/_ADT/circular_list.cmod
@@ -495,8 +495,8 @@ PIKECLASS CircularList
       THIS->a->size = size;
       if (THIS->size > 0)
       {
-	memmove((char *)(ITEM(THIS->a)+(size-endpos)),
-		(char *)(ITEM(THIS->a)+(THIS->pos)),
+	memmove(ITEM(THIS->a)+(size-endpos),
+		ITEM(THIS->a)+(THIS->pos),
 		(endpos) * sizeof(struct svalue));
 	THIS->pos = size-endpos;
       }