diff --git a/src/program.c b/src/program.c
index 587c9c3f42e6b83a49690bcea4984290d243bdef..10c08c376f7b27c534e04416bf4e1b596b0dfdd2 100644
--- a/src/program.c
+++ b/src/program.c
@@ -5,7 +5,7 @@
 \*/
 /**/
 #include "global.h"
-RCSID("$Id: program.c,v 1.257 2000/08/10 17:46:34 grubba Exp $");
+RCSID("$Id: program.c,v 1.258 2000/08/10 17:51:34 grubba Exp $");
 #include "program.h"
 #include "object.h"
 #include "dynamic_buffer.h"
@@ -1087,7 +1087,7 @@ int sizeof_variable(int run_time_type)
   }
 }
 
-static int alignof_variable(int run_time_type)
+static ptrdiff_t alignof_variable(int run_time_type)
 {
   switch(run_time_type)
   {
@@ -1384,8 +1384,8 @@ PMOD_EXPORT struct program *debug_end_program(void)
  */
 PMOD_EXPORT size_t low_add_storage(size_t size, size_t alignment, int modulo_orig)
 {
-  long offset;
-  int modulo;
+  ptrdiff_t offset;
+  ptrdiff_t modulo;
 
   if(!size) return Pike_compiler->new_program->storage_needed;
 
@@ -1428,11 +1428,10 @@ PMOD_EXPORT size_t low_add_storage(size_t size, size_t alignment, int modulo_ori
 
   if( (offset /* + OFFSETOF(object,storage) */ - modulo_orig ) % alignment )
     fatal("add_storage failed horribly(2) %ld %ld %ld %ld!\n",
-	  (long)offset,
+	  DO_NOT_WARN((long)offset),
 	  (long)0 /* + OFFSETOF(object,storage) */,
 	  (long)modulo_orig,
-	  (long)alignment
-	  );
+	  DO_NOT_WARN((long)alignment));
 
 #endif
 
@@ -1659,7 +1658,8 @@ void low_inherit(struct program *p,
 		 INT32 flags,
 		 struct pike_string *name)
 {
-  int e, inherit_offset, storage_offset;
+  int e;
+  ptrdiff_t inherit_offset, storage_offset;
   struct inherit inherit;
   struct pike_string *s;
 
@@ -2782,12 +2782,12 @@ int find_shared_string_identifier(struct pike_string *name,
 #ifdef FIND_FUNCTION_HASHSIZE
   if(prog -> flags & PROGRAM_FIXED)
   {
-    unsigned int hashval;
-    hashval=my_hash_string(name);
-    hashval+=prog->id;
-    hashval^=(unsigned long)prog;
-    hashval-=name->str[0];
-    hashval%=FIND_FUNCTION_HASHSIZE;
+    size_t hashval;
+    hashval = my_hash_string(name);
+    hashval += prog->id;
+    hashval ^= (size_t)prog;
+    hashval -= name->str[0];
+    hashval %= FIND_FUNCTION_HASHSIZE;
     if(is_same_string(cache[hashval].name,name) &&
        cache[hashval].id==prog->id)
       return cache[hashval].fun;
@@ -3087,7 +3087,7 @@ PMOD_EXPORT char *get_line(unsigned char *pc,struct program *prog,INT32 *linep)
 {
   static char *file, *cnt;
   static INT32 off,line,pid;
-  INT32 offset;
+  ptrdiff_t offset;
 
   if (prog == 0) return "Unkown program";
   offset = pc - prog->program;
@@ -3145,7 +3145,7 @@ void my_yyerror(char *fmt,...)  ATTRIBUTE((format(printf,1,2)))
   VSPRINTF(buf, fmt, args);
 #endif /* HAVE_VSNPRINTF */
 
-  if((long)strlen(buf) >= (long)sizeof(buf))
+  if((size_t)strlen(buf) >= (size_t)sizeof(buf))
     fatal("Buffer overflow in my_yyerror.\n");
 
   yyerror(buf);
@@ -3643,7 +3643,7 @@ static void gc_check_program(struct program *p)
 #ifdef PIKE_DEBUG
       if(debug_gc_check(p->inherits[e].parent,T_PROGRAM,p)==-2)
 	fprintf(stderr,"(program at 0x%lx -> inherit[%d].parent)\n",
-		(long)p,
+		DO_NOT_WARN((long)p),
 		e);
 #else
       debug_gc_check(p->inherits[e].parent, T_PROGRAM, p);
diff --git a/src/stralloc.c b/src/stralloc.c
index d6dfb46b16ad1dac4be2b4bf7c21344cd7cc06e4..4d42086afacb81c181d068b093a2538ff060dcd9 100644
--- a/src/stralloc.c
+++ b/src/stralloc.c
@@ -25,7 +25,7 @@
 #define HUGE HUGE_VAL
 #endif /*!HUGE*/
 
-RCSID("$Id: stralloc.c,v 1.92 2000/08/10 08:41:30 grubba Exp $");
+RCSID("$Id: stralloc.c,v 1.93 2000/08/10 17:57:04 grubba Exp $");
 
 #define BEGIN_HASH_SIZE 997
 #define MAX_AVG_LINK_LENGTH 3
@@ -47,7 +47,7 @@ unsigned INT32 num_strings=0;
 
 #define StrHash(s,len) low_do_hash(s,len,0)
 
-static unsigned int low_do_hash(const void *s, int len, int size_shift)
+static unsigned int low_do_hash(const void *s, ptrdiff_t len, int size_shift)
 {
   full_hash_value=hashmem(s,len<<size_shift,HASH_PREFIX<<size_shift);
   return full_hash_value % htable_size;
@@ -59,7 +59,7 @@ static INLINE unsigned int do_hash(struct pike_string *s)
 }
 
 
-static INLINE int find_magnitude1(const unsigned INT16 *s, int len)
+static INLINE int find_magnitude1(const unsigned INT16 *s, ptrdiff_t len)
 {
   while(--len>=0)
     if(s[len]>=256)
@@ -67,7 +67,7 @@ static INLINE int find_magnitude1(const unsigned INT16 *s, int len)
   return 0;
 }
 
-static INLINE int find_magnitude2(const unsigned INT32 *s, int len)
+static INLINE int find_magnitude2(const unsigned INT32 *s, ptrdiff_t len)
 {
   while(--len>=0)
   {
@@ -161,8 +161,8 @@ CONVERT(2,0)
 CONVERT(2,1)
 
 
-PMOD_EXPORT int generic_compare_strings(const void *a,int alen, int asize,
-			    const void *b,int blen, int bsize)
+PMOD_EXPORT int generic_compare_strings(const void *a, ptrdiff_t alen, int asize,
+					const void *b, ptrdiff_t blen, int bsize)
 {
 #define TWO_SIZES(X,Y) (((X)<<2)+(Y))
   if(alen != blen) return 0;
@@ -180,8 +180,8 @@ PMOD_EXPORT int generic_compare_strings(const void *a,int alen, int asize,
 
 
 PMOD_EXPORT void generic_memcpy(PCHARP to,
-		    PCHARP from,
-		    int len)
+				PCHARP from,
+				ptrdiff_t len)
 {
 #ifdef PIKE_DEBUG
   if(len<0)
@@ -285,7 +285,7 @@ static int improper_zero_termination(struct pike_string *s)
  * This assumes that the string is minimized!!!! 
  */
 static struct pike_string *internal_findstring(const char *s,
-					       int len,
+					       ptrdiff_t len,
 					       int size_shift,
 					       int h)
 {
@@ -444,7 +444,7 @@ static void link_pike_string(struct pike_string *s, unsigned int h)
     /* This could in theory have a pretty ugly complexity */
     /* /Hubbe
      */
-    unsigned INT32 save_full_hash_value=full_hash_value;
+    size_t save_full_hash_value = full_hash_value;
     
     need_more_hash_prefix=0;
     HASH_PREFIX=HASH_PREFIX*2;
@@ -456,7 +456,7 @@ static void link_pike_string(struct pike_string *s, unsigned int h)
       base_table[h]=0;
       while(tmp)
       {
-	unsigned int h2;
+	size_t h2;
 	struct pike_string *tmp2=tmp; /* First unlink */
 	tmp=tmp2->next;
 
@@ -493,12 +493,12 @@ PMOD_EXPORT struct pike_string *debug_begin_wide_shared_string(size_t len, int s
  */
 PMOD_EXPORT struct pike_string *low_end_shared_string(struct pike_string *s)
 {
-  int len,h;
+  ptrdiff_t len, h;
   struct pike_string *s2;
 
-  len=s->len;
-  h=do_hash(s);
-  s2=internal_findstring(s->str,len,s->size_shift,h);
+  len = s->len;
+  h = do_hash(s);
+  s2 = internal_findstring(s->str,len,s->size_shift,h);
 #ifdef PIKE_DEBUG
   if(s2==s) 
     fatal("end_shared_string called twice! (or something like that)\n");
diff --git a/src/stralloc.h b/src/stralloc.h
index 27bedcf3d128ee64baea6ed4588c276753d9d291..87c1a9b2326f96f64078bd55ccbbf2e561537386 100644
--- a/src/stralloc.h
+++ b/src/stralloc.h
@@ -5,7 +5,7 @@
 \*/
 
 /*
- * $Id: stralloc.h,v 1.51 2000/08/10 08:42:26 grubba Exp $
+ * $Id: stralloc.h,v 1.52 2000/08/10 17:57:17 grubba Exp $
  */
 #ifndef STRALLOC_H
 #define STRALLOC_H
@@ -157,11 +157,11 @@ CONVERT(1,0)
 CONVERT(1,2)
 CONVERT(2,0)
 CONVERT(2,1)
-PMOD_EXPORT int generic_compare_strings(const void *a,int alen, int asize,
-			    const void *b,int blen, int bsize);
+PMOD_EXPORT int generic_compare_strings(const void *a, ptrdiff_t alen, int asize,
+					const void *b, ptrdiff_t blen, int bsize);
 PMOD_EXPORT void generic_memcpy(PCHARP to,
 				PCHARP from,
-				int len);
+				ptrdiff_t len);
 PMOD_EXPORT INLINE void pike_string_cpy(PCHARP to,
 					struct pike_string *from);
 PMOD_EXPORT struct pike_string *binary_findstring(const char *foo,