Make new gcc -Wall happy
diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c
index d06700d..d1da535 100644
--- a/Modules/_tkinter.c
+++ b/Modules/_tkinter.c
@@ -358,7 +358,7 @@
 	}
 
 	strcpy(argv0, className);
-	if (isupper(argv0[0]))
+	if (isupper((int)(argv0[0])))
 		argv0[0] = tolower(argv0[0]);
 	Tcl_SetVar(v->interp, "argv0", argv0, TCL_GLOBAL_ONLY);
 	ckfree(argv0);
diff --git a/Modules/bsddbmodule.c b/Modules/bsddbmodule.c
index b3474c4..2f0d05d 100644
--- a/Modules/bsddbmodule.c
+++ b/Modules/bsddbmodule.c
@@ -433,7 +433,7 @@
 {
 	PyObject *list, *item;
 	DBT krec, drec;
-	char *data,buf[4096];
+	char *data=NULL,buf[4096];
 	int status;
 	int err;
 
@@ -556,8 +556,8 @@
 {
 	int status;
 	DBT krec, drec;
-	char *kdata,kbuf[4096];
-	char *ddata,dbuf[4096];
+	char *kdata=NULL,kbuf[4096];
+	char *ddata=NULL,dbuf[4096];
 	PyObject *result;
 
 	if (!PyArg_NoArgs(args))
diff --git a/Modules/parsermodule.c b/Modules/parsermodule.c
index c09cccc..57fbf48 100644
--- a/Modules/parsermodule.c
+++ b/Modules/parsermodule.c
@@ -1704,20 +1704,22 @@
 	    res = (validate_numnodes(tree, 6, "try/finally")
 		   && validate_colon(CHILD(tree, 4))
 		   && validate_suite(CHILD(tree, 5)));
-	else if (res)
+	else if (res) {
 	    if (nch == (pos + 3)) {
 		res = ((strcmp(STR(CHILD(tree, pos)), "except") == 0)
 		       || (strcmp(STR(CHILD(tree, pos)), "else") == 0));
 		if (!res)
 		    err_string("Illegal trailing triple in try statement.");
 	    }
-	    else if (nch == (pos + 6))
+	    else if (nch == (pos + 6)) {
 		res = (validate_name(CHILD(tree, pos), "except")
 		       && validate_colon(CHILD(tree, pos + 1))
 		       && validate_suite(CHILD(tree, pos + 2))
 		       && validate_name(CHILD(tree, pos + 3), "else"));
+	    }
 	    else
 		res = validate_numnodes(tree, pos + 3, "try/except");
+	}
     }
     return (res);
 
diff --git a/Modules/readline.c b/Modules/readline.c
index c74aee0..594732b 100644
--- a/Modules/readline.c
+++ b/Modules/readline.c
@@ -19,6 +19,14 @@
 /* GNU readline definitions */
 #include <readline/readline.h> /* You may need to add an -I option to Setup */
 
+extern int rl_parse_and_bind();
+extern int rl_read_init_file();
+extern int rl_insert_text();
+extern int rl_bind_key();
+extern int rl_bind_key_in_map();
+extern int rl_initialize();
+extern int add_history();
+
 /* Pointers needed from outside (but not declared in a header file). */
 extern int (*PyOS_InputHook)();
 extern char *(*PyOS_ReadlineFunctionPointer) Py_PROTO((char *));
diff --git a/Modules/regexpr.c b/Modules/regexpr.c
index 64e199d..55b1dff 100644
--- a/Modules/regexpr.c
+++ b/Modules/regexpr.c
@@ -1271,11 +1271,12 @@
 		}
 		case Rbol:
 		{
-			if (!beginning_context)
+			if (!beginning_context) {
 				if (regexp_context_indep_ops)
 					goto op_error;
 				else
 					goto normal_char;
+			}
 			opcode = Cbol;
 			goto store_opcode;
 		}
@@ -1289,11 +1290,12 @@
 			      ((regexp_syntax & RE_NO_BK_PARENS)?
 			       (regex[pos] == ')'):
 			       (pos+1 < size && regex[pos] == '\134' &&
-				regex[pos+1] == ')'))))
+				regex[pos+1] == ')')))) {
 				if (regexp_context_indep_ops)
 					goto op_error;
 				else
 					goto normal_char;
+			}
 			opcode = Ceol;
 			goto store_opcode;
 			/* NOTREACHED */
@@ -1301,11 +1303,12 @@
 		}
 		case Roptional:
 		{
-			if (beginning_context)
+			if (beginning_context) {
 				if (regexp_context_indep_ops)
 					goto op_error;
 				else
 					goto normal_char;
+			}
 			if (CURRENT_LEVEL_START == pattern_offset)
 				break; /* ignore empty patterns for ? */
 			ALLOC(3);
@@ -1316,11 +1319,12 @@
 		case Rstar:
 		case Rplus:
 		{
-			if (beginning_context)
+			if (beginning_context) {
 				if (regexp_context_indep_ops)
 					goto op_error;
 				else
 					goto normal_char;
+			}
 			if (CURRENT_LEVEL_START == pattern_offset)
 				break; /* ignore empty patterns for + and * */
 			ALLOC(9);
@@ -2061,11 +2065,12 @@
 	else
 		dir = 1;
 
-	if (anchor == 2)
+	if (anchor == 2) {
 		if (pos != 0)
 			return -1;
 		else
 			range = 0;
+	}
 
 	for (; range >= 0; range--, pos += dir)
 	{
diff --git a/Modules/structmodule.c b/Modules/structmodule.c
index 065ec6f..0cf996f 100644
--- a/Modules/structmodule.c
+++ b/Modules/structmodule.c
@@ -1008,7 +1008,7 @@
 	s = fmt;
 	size = 0;
 	while ((c = *s++) != '\0') {
-		if (isspace(c))
+		if (isspace((int)c))
 			continue;
 		if ('0' <= c && c <= '9') {
 			num = c - '0';
@@ -1110,7 +1110,7 @@
 	res = restart = PyString_AsString(result);
 
 	while ((c = *s++) != '\0') {
-		if (isspace(c))
+		if (isspace((int)c))
 			continue;
 		if ('0' <= c && c <= '9') {
 			num = c - '0';
@@ -1242,7 +1242,7 @@
 	str = start;
 	s = fmt;
 	while ((c = *s++) != '\0') {
-		if (isspace(c))
+		if (isspace((int)c))
 			continue;
 		if ('0' <= c && c <= '9') {
 			num = c - '0';
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index 87005f5..3297332 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -348,13 +348,15 @@
 	}
 	if (PyComplex_Check(r)) {
 		cr = ((PyComplexObject*)r)->cval;
-		if (own_r)
+		if (own_r) {
 			Py_DECREF(r);
+		}
 	}
 	else {
 		tmp = (*nbr->nb_float)(r);
-		if (own_r)
+		if (own_r) {
 			Py_DECREF(r);
+		}
 		if (tmp == NULL)
 			return NULL;
 		cr.real = PyFloat_AsDouble(tmp);
diff --git a/Python/ceval.c b/Python/ceval.c
index 28360f4..0527537 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -2745,8 +2745,9 @@
 						callable, args);
 					Py_DECREF(args);
 				}
-				if (callable != basetype)
+				if (callable != basetype) {
 					Py_DECREF(callable);
+				}
 				return newclass;
 			}
 			PyErr_SetString(PyExc_TypeError,
diff --git a/Python/getargs.c b/Python/getargs.c
index 7bc150d..502944d 100644
--- a/Python/getargs.c
+++ b/Python/getargs.c
@@ -257,7 +257,7 @@
 		}
 	}
 
-	if (*format != '\0' && !isalpha(*format) &&
+	if (*format != '\0' && !isalpha((int)(*format)) &&
 	    *format != '(' &&
 	    *format != '|' && *format != ':' && *format != ';') {
 		PyErr_Format(PyExc_SystemError,
diff --git a/Python/marshal.c b/Python/marshal.c
index 75a20c2..9daeeb3 100644
--- a/Python/marshal.c
+++ b/Python/marshal.c
@@ -143,12 +143,15 @@
 {
 	int i, n;
 	
-	if (v == NULL)
+	if (v == NULL) {
 		w_byte(TYPE_NULL, p);
-	else if (v == Py_None)
+	}
+	else if (v == Py_None) {
 		w_byte(TYPE_NONE, p);
-	else if (v == Py_Ellipsis)
-	        w_byte(TYPE_ELLIPSIS, p);  
+	}
+	else if (v == Py_Ellipsis) {
+	        w_byte(TYPE_ELLIPSIS, p);
+	}
 	else if (PyInt_Check(v)) {
 		long x = PyInt_AS_LONG((PyIntObject *)v);
 #if SIZEOF_LONG > 4
diff --git a/Python/thread_pthread.h b/Python/thread_pthread.h
index 5b70fa4..2f57b36 100644
--- a/Python/thread_pthread.h
+++ b/Python/thread_pthread.h
@@ -175,11 +175,12 @@
 static void do_exit_thread _P1(no_cleanup, int no_cleanup)
 {
 	dprintf(("exit_thread called\n"));
-	if (!initialized)
+	if (!initialized) {
 		if (no_cleanup)
 			_exit(0);
 		else
 			exit(0);
+	}
 }
 
 void exit_thread _P0()