diff --git a/src/array.c b/src/array.c
index f3f3bc2818716df18cdbe910f0b85c72435bc004..1b16bd19da7095569a30fe3e0d54115af33dbb0f 100644
--- a/src/array.c
+++ b/src/array.c
@@ -23,7 +23,7 @@
 #include "stuff.h"
 #include "bignum.h"
 
-RCSID("$Id: array.c,v 1.85 2000/08/16 21:39:07 mast Exp $");
+RCSID("$Id: array.c,v 1.86 2000/09/08 16:19:42 grubba Exp $");
 
 PMOD_EXPORT struct array empty_array=
 {
@@ -1588,14 +1588,14 @@ PMOD_EXPORT struct array *explode(struct pike_string *str,
     init_generic_memsearcher(&searcher,
 			     del->str,
 			     del->len,
-			     del->size_shift,
+			     (char)del->size_shift,
 			     str->len,
-			     str->size_shift);
+			     (char)str->size_shift);
     
     while((tmp=(char *)generic_memory_search(&searcher,
 					     s,
 					     (end-s)>>str->size_shift,
-					     str->size_shift)))
+					     (char)str->size_shift)))
     {
       if(ret->size == ret->malloced_size)
       {
diff --git a/src/docode.c b/src/docode.c
index c4e8bcf2b71729e9f03446ef52e4df67047f405e..f7223c7c50fd9f4cddcadd9b3b815ad6de07ffe7 100644
--- a/src/docode.c
+++ b/src/docode.c
@@ -5,7 +5,7 @@
 \*/
 /**/
 #include "global.h"
-RCSID("$Id: docode.c,v 1.80 2000/08/24 04:04:40 hubbe Exp $");
+RCSID("$Id: docode.c,v 1.81 2000/09/08 16:32:59 grubba Exp $");
 #include "las.h"
 #include "program.h"
 #include "pike_types.h"
@@ -27,7 +27,7 @@ RCSID("$Id: docode.c,v 1.80 2000/08/24 04:04:40 hubbe Exp $");
 #include "language.h"
 #include "lex.h"
 
-static int do_docode2(node *n,int flags);
+static int do_docode2(node *n, INT16 flags);
 
 INT32 current_break=-1;
 INT32 current_continue=-1;
@@ -74,7 +74,7 @@ void do_pop(int x)
 
 #define DO_CODE_BLOCK(X) do_pop(do_docode((X),DO_NOT_COPY | DO_POP | DO_DEFER_POP))
 
-int do_docode(node *n,INT16 flags)
+int do_docode(node *n, INT16 flags)
 {
   int i;
   int save_current_line=lex.current_line;
@@ -93,7 +93,7 @@ static int is_efun(node *n, c_fun fun)
     n->u.sval.u.efun->function == fun;
 }
 
-static void code_expression(node *n, int flags, char *err)
+static void code_expression(node *n, INT16 flags, char *err)
 {
   switch(do_docode(check_node_hash(n), flags & ~ DO_POP))
   {
@@ -233,7 +233,7 @@ int do_lfun_call(int id,node *args)
   return 1;
 }
 
-static int do_docode2(node *n,int flags)
+static int do_docode2(node *n, INT16 flags)
 {
   ptrdiff_t tmp1,tmp2,tmp3;
 
diff --git a/src/interpret.c b/src/interpret.c
index 8c136acea9061525f71e7ccc34e887cc8be0807f..572eff8af012730e9e59e4568ac814d8be87ca56 100644
--- a/src/interpret.c
+++ b/src/interpret.c
@@ -5,7 +5,7 @@
 \*/
 /**/
 #include "global.h"
-RCSID("$Id: interpret.c,v 1.169 2000/09/07 11:28:37 grubba Exp $");
+RCSID("$Id: interpret.c,v 1.170 2000/09/08 16:17:56 grubba Exp $");
 #include "interpret.h"
 #include "object.h"
 #include "program.h"
@@ -238,7 +238,8 @@ void lvalue_to_svalue_no_free(struct svalue *to,struct svalue *lval)
       break;
       
     case T_SHORT_LVALUE:
-      assign_from_short_svalue_no_free(to, lval->u.short_lval, lval->subtype);
+      assign_from_short_svalue_no_free(to, lval->u.short_lval,
+				       (TYPE_T)lval->subtype);
       break;
       
     case T_OBJECT:
@@ -305,7 +306,7 @@ PMOD_EXPORT void assign_lvalue(struct svalue *lval,struct svalue *from)
     break;
 
   case T_SHORT_LVALUE:
-    assign_to_short_svalue(lval->u.short_lval, lval->subtype, from);
+    assign_to_short_svalue(lval->u.short_lval, (TYPE_T)lval->subtype, from);
     break;
 
   case T_OBJECT:
diff --git a/src/mapping.c b/src/mapping.c
index 515f0fe5d203d3659279b03e343ead88e698d83d..f81531049d8a9ae409c5872f6a12b6b5f5f75f46 100644
--- a/src/mapping.c
+++ b/src/mapping.c
@@ -5,7 +5,7 @@
 \*/
 /**/
 #include "global.h"
-RCSID("$Id: mapping.c,v 1.101 2000/09/08 04:40:31 hubbe Exp $");
+RCSID("$Id: mapping.c,v 1.102 2000/09/08 16:38:20 grubba Exp $");
 #include "main.h"
 #include "object.h"
 #include "mapping.h"
@@ -555,7 +555,7 @@ PMOD_EXPORT void mapping_set_flags(struct mapping *m, int flags)
 {
   struct mapping_data *md = m->data;
   if (md->refs > 1) {
-    struct keypair *k, *prev;
+    struct keypair *k = NULL, *prev = NULL;
     COPYMAP2();
   }
   md->flags = flags;
diff --git a/src/modules/Image/encodings/gif_lzw.c b/src/modules/Image/encodings/gif_lzw.c
index 77fad05f18c50ded2389117ae03ec74a8c0da21e..05fef84c842c9b940ade761547518c85aca3ba07 100644
--- a/src/modules/Image/encodings/gif_lzw.c
+++ b/src/modules/Image/encodings/gif_lzw.c
@@ -1,7 +1,7 @@
 /*
 **! module Image
 **! note
-**!	$Id: gif_lzw.c,v 1.8 2000/08/03 21:25:32 grubba Exp $
+**!	$Id: gif_lzw.c,v 1.9 2000/09/08 15:53:32 grubba Exp $
 */
 
 #include "global.h"
@@ -131,7 +131,7 @@ static INLINE void lzw_add(struct gif_lzw *lzw,int c)
       lzw->codes=(1L<<lzw->bits)+2;
       
       /* output clearcode, 1000... (bits) */
-      lzw_output(lzw,1L<<lzw->bits);
+      lzw_output(lzw, (lzwcode_t)(1L<<lzw->bits));
 
       lzw->codebits=lzw->bits+1;
       lzw->current=c;
@@ -191,14 +191,14 @@ void image_gif_lzw_init(struct gif_lzw *lzw,int bits)
    lzw->lastout=0;
    lzw->earlychange=0;
    lzw->reversebits=0;
-   lzw_output(lzw,1L<<bits);
+   lzw_output(lzw, (lzwcode_t)(1L<<bits));
 }
 
 void image_gif_lzw_finish(struct gif_lzw *lzw)
 {
    if (lzw->current!=LZWCNULL)
       lzw_output(lzw,lzw->current);
-   lzw_output( lzw, (1L<<lzw->bits)+1 ); /* GIF end code */
+   lzw_output( lzw, (lzwcode_t)(1L<<lzw->bits)+1 ); /* GIF end code */
    if (lzw->outbit)
    {
       if (lzw->reversebits)
diff --git a/src/modules/Odbc/odbc_result.c b/src/modules/Odbc/odbc_result.c
index dd77fb95e7d5cc1271e15dc4a105f08e606fbd2a..bb055c9e3b0996e3c58b117195218b7319bbbd4d 100644
--- a/src/modules/Odbc/odbc_result.c
+++ b/src/modules/Odbc/odbc_result.c
@@ -1,5 +1,5 @@
 /*
- * $Id: odbc_result.c,v 1.22 2000/08/31 21:31:56 grubba Exp $
+ * $Id: odbc_result.c,v 1.23 2000/09/08 15:57:28 grubba Exp $
  *
  * Pike  interface to ODBC compliant databases
  *
@@ -16,7 +16,7 @@
 #include "config.h"
 #endif /* HAVE_CONFIG_H */
 
-RCSID("$Id: odbc_result.c,v 1.22 2000/08/31 21:31:56 grubba Exp $");
+RCSID("$Id: odbc_result.c,v 1.23 2000/09/08 15:57:28 grubba Exp $");
 
 #include "interpret.h"
 #include "object.h"
@@ -150,7 +150,7 @@ static void odbc_fix_fields(void)
 				      DO_NOT_WARN((SQLSMALLINT)buf_size),
 				      &name_len,
 				      &sql_type, &precision, &scale, &nullable),
-		       0);
+		       (void(*)(void))0);
       if (name_len < (ptrdiff_t)buf_size) {
 	break;
       }
diff --git a/src/modules/Regexp/pike_regexp.c b/src/modules/Regexp/pike_regexp.c
index 05ae9ca62142b4482227cd2be90f475388633bed..c85a79a2aceb44c9e93ce2bc46eb0dab39f290dc 100644
--- a/src/modules/Regexp/pike_regexp.c
+++ b/src/modules/Regexp/pike_regexp.c
@@ -1,5 +1,5 @@
 /* 
- * $Id: pike_regexp.c,v 1.16 2000/09/02 23:52:23 marcus Exp $
+ * $Id: pike_regexp.c,v 1.17 2000/09/08 16:02:29 grubba Exp $
  *
  * regexp.c - regular expression matching
  *
@@ -394,7 +394,7 @@ static char *reg(int paren,int *flagp)
 	    FAIL("too many ()");
 	parno = regnpar;
 	regnpar++;
-	ret = regnode(OPEN + parno);
+	ret = regnode((char)(OPEN + parno));
     } else
 	ret = (char *)NULL;
 
@@ -421,7 +421,7 @@ static char *reg(int paren,int *flagp)
     }
 
     /* Make a closing node, and hook it on the end. */
-    ender = regnode((paren) ? CLOSE + parno : END);
+    ender = regnode((paren) ? (char)(CLOSE + parno) : END);
     regtail(ret, ender);
 
     /* Hook the tails of the branches to the closing node. */
@@ -579,7 +579,7 @@ static char *regatom(int *flagp)
 	    } else
 		ret = regnode(ANYOF);
 	    if (*regparse == RSQBRAC || *regparse == '-')
-		regc(*regparse++);
+		regc((char)(*regparse++));
 	    while (*regparse != '\0' && *regparse != RSQBRAC) {
 		if (*regparse == '-') {
 		    regparse++;
@@ -591,11 +591,11 @@ static char *regatom(int *flagp)
 			if (class > classend + 1)
 			    FAIL("invalid [] range");
 			for (; class <= classend; class++)
-			    regc(class);
+			    regc((char)class);
 			regparse++;
 		    }
 		} else
-		    regc(*regparse++);
+		    regc((char)(*regparse++));
 	    }
 	    regc('\0');
 	    if (*regparse != RSQBRAC)
@@ -637,7 +637,7 @@ static char *regatom(int *flagp)
 		*flagp |= SIMPLE;
 	    ret = regnode(EXACTLY);
 	    while (len > 0) {
-		regc(*regparse++);
+		regc((char)(*regparse++));
 		len--;
 	    }
 	    regc('\0');
diff --git a/src/modules/_Image_JPEG/image_jpeg.c b/src/modules/_Image_JPEG/image_jpeg.c
index d72e93153717188276b158891a9c05678d1854e5..da67ba0e2bfe94732ed4f1c088b50b65fb37bd3b 100644
--- a/src/modules/_Image_JPEG/image_jpeg.c
+++ b/src/modules/_Image_JPEG/image_jpeg.c
@@ -1,5 +1,5 @@
 /*
- * $Id: image_jpeg.c,v 1.34 2000/08/15 13:03:15 grubba Exp $
+ * $Id: image_jpeg.c,v 1.35 2000/09/08 16:05:35 grubba Exp $
  */
 
 #include "global.h"
@@ -37,7 +37,7 @@
 #ifdef HAVE_STDLIB_H
 #undef HAVE_STDLIB_H
 #endif
-RCSID("$Id: image_jpeg.c,v 1.34 2000/08/15 13:03:15 grubba Exp $");
+RCSID("$Id: image_jpeg.c,v 1.35 2000/09/08 16:05:35 grubba Exp $");
 
 /* For some reason EXTERN can be defined here.
  * This is not good, since it confuses compilation.h.
@@ -476,7 +476,7 @@ static void image_jpeg_encode(INT32 args)
       if (parameter_int(sp+1-args,param_baseline,&p) || p!=-1)
       {
 	 if (q<0) q=0; else if (q>100) q=100;
-	 jpeg_set_quality(&cinfo,q,!!p);
+	 jpeg_set_quality(&cinfo, q, (boolean)(!!p));
       }
 
       if (parameter_int(sp+1-args,param_optimize,&p))
diff --git a/src/modules/_Image_TTF/image_ttf.c b/src/modules/_Image_TTF/image_ttf.c
index 8e3e5b2c23d2d06e9af091516a7a357e23ec3315..80ca59129f5daff7a695b0518a50c60423b241b8 100644
--- a/src/modules/_Image_TTF/image_ttf.c
+++ b/src/modules/_Image_TTF/image_ttf.c
@@ -1,12 +1,12 @@
 /*
- * $Id: image_ttf.c,v 1.34 2000/08/15 13:03:45 grubba Exp $
+ * $Id: image_ttf.c,v 1.35 2000/09/08 16:13:27 grubba Exp $
  */
 
 #include "config.h"
 
 
 #include "global.h"
-RCSID("$Id: image_ttf.c,v 1.34 2000/08/15 13:03:45 grubba Exp $");
+RCSID("$Id: image_ttf.c,v 1.35 2000/09/08 16:13:27 grubba Exp $");
 
 #ifdef HAVE_LIBTTF
 #if defined(HAVE_FREETYPE_FREETYPE_H) && defined(HAVE_FREETYPE_FTXKERN_H)
@@ -249,7 +249,7 @@ static void image_ttf_make(INT32 args)
 
    res=TT_Open_Collection(engine, sp[-args].u.string->str, col, &face);
    if (res) my_tt_error("Image.TTF()","",res);
-   while(! TT_Load_Kerning_Table( face, i++ ) );
+   while(! TT_Load_Kerning_Table( face, (TT_UShort)(i++) ) );
 
    pop_n_elems(args);
 
@@ -643,7 +643,8 @@ static void ttf_instance_setc(struct image_ttf_face_struct *face_s,
 		(float)prop.horizontal->Ascender));
 */
 
-   if ((res=TT_Set_Instance_Resolutions(face_i->instance,resol,resol)))
+   if ((res=TT_Set_Instance_Resolutions(face_i->instance,
+					(TT_UShort)resol, (TT_UShort)resol)))
       my_tt_error("Image.TTF.FaceInstance()",
 		  "TT_Set_Instance_Resolutions: ",res);
 
@@ -729,7 +730,7 @@ static void ttf_translate_8bit(TT_CharMap charMap,
 
    THREADS_ALLOW();
    for (i=0; i<len; i++)
-      dest[0][i]=TT_Char_Index(charMap,what[i]+base);
+      dest[0][i]=TT_Char_Index(charMap, (TT_UShort)what[i]+base);
    THREADS_DISALLOW();
 }
 
@@ -746,7 +747,7 @@ static void ttf_translate_16bit(TT_CharMap charMap,
 
    THREADS_ALLOW();
    for (i=0; i<len; i++)
-      dest[0][i]=TT_Char_Index(charMap,what[i]+base);
+      dest[0][i] = TT_Char_Index(charMap, (TT_UShort)(what[i] + base));
    THREADS_DISALLOW();
 }
 
@@ -761,9 +762,10 @@ static void ttf_get_nice_charmap(TT_Face face,
    for (i=0; i<n; i++)
    {
       int ihas=0;
-      unsigned short platformID,encodingID;
+      TT_UShort platformID, encodingID;
 
-      if ((res=TT_Get_CharMap_ID(face,i,&platformID,&encodingID)))
+      if ((res=TT_Get_CharMap_ID(face, (TT_UShort)i,
+				 &platformID, &encodingID)))
 	 my_tt_error(where,"TT_Get_CharMap_ID: ",res);
 
       switch (platformID*100+encodingID)
@@ -789,7 +791,7 @@ static void ttf_get_nice_charmap(TT_Face face,
    if (got==-1)
       error("%s: no charmaps at all\n",where);
 
-   if ((res=TT_Get_CharMap(face,best,charMap)))
+   if ((res=TT_Get_CharMap(face, (TT_UShort)best, charMap)))
       my_tt_error(where,"TT_Get_CharMap: ",res);
 }
 
@@ -868,7 +870,8 @@ static void image_ttf_faceinstance_ponder(INT32 args)
       if ((res=TT_New_Glyph(face_s->face,&glyph)))
 	 my_tt_error("Image.TTF.FaceInstance->ponder()","TT_New_Glyph: ",res);
 
-      if ((res=TT_Load_Glyph(face_i->instance,glyph,ind,face_i->load_flags)))
+      if ((res=TT_Load_Glyph(face_i->instance, glyph,
+			     (TT_UShort)ind, (TT_UShort)face_i->load_flags)))
 	 my_tt_error("Image.TTF.FaceInstance->ponder()","TT_Load_Glyph: ",res);
 
       if ((res=TT_Get_Glyph_Metrics(glyph,&metrics)))
@@ -1055,8 +1058,8 @@ static void image_ttf_faceinstance_write(INT32 args)
 	 if ((res=TT_New_Glyph(face_s->face,&glyph)))
 	    { errs="TT_New_Glyph: "; break; }
 
-	 if ((res=TT_Load_Glyph(face_i->instance,glyph,
-				ind,face_i->load_flags)))
+	 if ((res=TT_Load_Glyph(face_i->instance, glyph, (TT_UShort)ind,
+				(TT_UShort)face_i->load_flags)))
 	    { errs="TT_Load_Glyph: "; break; }
 
 	 if ((res=TT_Get_Glyph_Metrics(glyph,&metrics)))
@@ -1148,8 +1151,8 @@ static void image_ttf_faceinstance_write(INT32 args)
 	    if ((res=TT_New_Glyph(face_s->face,&glyph)))
 	       { errs="TT_New_Glyph: "; break; }
 
-	    if ((res=TT_Load_Glyph(face_i->instance,glyph,
-				   ind,face_i->load_flags)))
+	    if ((res=TT_Load_Glyph(face_i->instance, glyph, (TT_UShort)ind,
+				   (TT_UShort)face_i->load_flags)))
 	       { errs="TT_Load_Glyph: "; break; }
 
 	    if ((res=TT_Get_Glyph_Metrics(glyph,&metrics)))
diff --git a/src/modules/_Image_XFace/image_xface.c b/src/modules/_Image_XFace/image_xface.c
index ffbc7d05fa86215b84ce3335353029a4be4b5746..15894a97bdbab043a16a55817b4aea2bf34665a5 100644
--- a/src/modules/_Image_XFace/image_xface.c
+++ b/src/modules/_Image_XFace/image_xface.c
@@ -1,5 +1,5 @@
 #include "global.h"
-RCSID("$Id: image_xface.c,v 1.10 2000/08/15 13:04:18 grubba Exp $");
+RCSID("$Id: image_xface.c,v 1.11 2000/09/08 16:14:32 grubba Exp $");
 
 #include "config.h"
 
@@ -355,7 +355,7 @@ static struct pike_string *encodeface(rgb_group *in)
   i = 0;
   while(mpz_cmp_ui(val, 0)) {
     n = mpz_fdiv_qr_ui(val, dum, val, 94);
-    low_my_putchar( n+'!', &buf );
+    low_my_putchar( (char)(n+'!'), &buf );
     i++;
   }
   if (i==0)
diff --git a/src/pike_memory.c b/src/pike_memory.c
index 4cfcd106061240a988e8cec8cde0461a838a925b..f502fc42c4d20c0ebf6b1d8fd50eea8e41d843b2 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.82 2000/09/03 15:38:56 mast Exp $");
+RCSID("$Id: pike_memory.c,v 1.83 2000/09/08 16:43:06 grubba Exp $");
 
 /* strdup() is used by several modules, so let's provide it */
 #ifndef HAVE_STRDUP
@@ -40,15 +40,15 @@ long pcharp_strlen(PCHARP a)
   return len;
 }
 
-INLINE p_wchar1 *MEMCHR1(p_wchar1 *p, p_wchar1 c, ptrdiff_t e)
+INLINE p_wchar1 *MEMCHR1(p_wchar1 *p, int c, ptrdiff_t e)
 {
-  while(--e >= 0) if(*(p++)==c) return p-1;
+  while(--e >= 0) if(*(p++) == (p_wchar1)c) return p-1;
   return (p_wchar1 *)0;
 }
 
-INLINE p_wchar2 *MEMCHR2(p_wchar2 *p, p_wchar2 c, ptrdiff_t e)
+INLINE p_wchar2 *MEMCHR2(p_wchar2 *p, int c, ptrdiff_t e)
 {
-  while(--e >= 0) if(*(p++)==c) return p-1;
+  while(--e >= 0) if(*(p++) == (p_wchar2)c) return p-1;
   return (p_wchar2 *)0;
 }
 
diff --git a/src/pike_types.c b/src/pike_types.c
index e8237b7cbfb04ff724f94835fd9a851f40584039..4cf0ea2a276693eb18046b48745b67ddfb34ef71 100644
--- a/src/pike_types.c
+++ b/src/pike_types.c
@@ -5,7 +5,7 @@
 \*/
 /**/
 #include "global.h"
-RCSID("$Id: pike_types.c,v 1.137 2000/09/03 22:01:22 mast Exp $");
+RCSID("$Id: pike_types.c,v 1.138 2000/09/08 16:34:49 grubba Exp $");
 #include <ctype.h>
 #include "svalue.h"
 #include "pike_types.h"
@@ -1597,7 +1597,7 @@ static char *low_match_types2(char *a,char *b, int flags)
 	  init_buf();
 	  for(e=0;e<indent;e++) my_strcat("  ");
 	  my_strcat("a_markers[");
-	  my_putchar(m+'0');
+	  my_putchar((char)(m+'0'));
 	  my_strcat("]=");
 	  low_describe_type(a_markers[m]->str);
 	  my_strcat("\n");
@@ -1681,7 +1681,7 @@ static char *low_match_types2(char *a,char *b, int flags)
 	  init_buf();
 	  for(e=0;e<indent;e++) my_strcat("  ");
 	  my_strcat("b_markers[");
-	  my_putchar(m+'0');
+	  my_putchar((char)(m+'0'));
 	  my_strcat("]=");
 	  low_describe_type(b_markers[m]->str);
 	  my_strcat("\n");
@@ -2111,7 +2111,7 @@ static int low_pike_types_le2(char *a, char *b,
 	init_buf();
 	for(e=0;e<indent;e++) my_strcat("  ");
 	my_strcat("a_markers[");
-	my_putchar(m+'0');
+	my_putchar((char)(m+'0'));
 	my_strcat("]=");
 	low_describe_type(a_markers[m]->str);
 	my_strcat("\n");
@@ -2186,7 +2186,7 @@ static int low_pike_types_le2(char *a, char *b,
 	init_buf();
 	for(e=0;e<indent;e++) my_strcat("  ");
 	my_strcat("b_markers[");
-	my_putchar(m+'0');
+	my_putchar((char)(m+'0'));
 	my_strcat("]=");
 	low_describe_type(b_markers[m]->str);
 	my_strcat("\n");