diff --git a/src/pike_memory.c b/src/pike_memory.c
index 7099295befd228bdea9190971e77600a8dc9ab7b..855d4db4887259dcc4eb4a9279b5fa533a455d11 100644
--- a/src/pike_memory.c
+++ b/src/pike_memory.c
@@ -10,7 +10,7 @@
 #include "pike_macros.h"
 #include "gc.h"
 
-RCSID("$Id: pike_memory.c,v 1.76 2000/08/10 18:57:08 nilsson Exp $");
+RCSID("$Id: pike_memory.c,v 1.77 2000/08/11 11:44:14 grubba Exp $");
 
 /* strdup() is used by several modules, so let's provide it */
 #ifndef HAVE_STRDUP
@@ -168,7 +168,7 @@ void reorder(char *memory, INT32 nitems, INT32 size,INT32 *order)
 
 size_t hashmem(const unsigned char *a, size_t len, size_t mlen)
 {
-  unsigned INT32 ret;
+  size_t ret;
 
   ret = 9248339*len;
   if(len<mlen)
@@ -220,17 +220,7 @@ size_t hashmem(const unsigned char *a, size_t len, size_t mlen)
     }
   }
 #else
-  for(
-#if SIZEOF_CHAR_P == 4
-      mlen >>= 3;
-#else /* sizeof(char *) != 4 */
-#if SIZEOF_CHAR_P == 8
-      mlen >>= 4;
-#else /* sizeof(char *) != 8 */
-      mlen /= 2*sizeof(size_t);
-#endif /* sizeof(char *) == 8 */
-#endif /* sizeof(char *) == 4 */
-      --mlen >= 0;)
+  for(mlen >>= 3; mlen--;)
   {
     register size_t t1,t2;
     t1= *(a++);