diff --git a/Python/compile.c b/Python/compile.c
index 1c38cf4..adb0d09 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -994,7 +994,6 @@
 {
 	int i=0;
 	int ns=2; /* number of slice arguments */
-	int first_missing=0;
 	node *ch;
 
 	/* first argument */
@@ -2871,7 +2870,7 @@
 {
 	unsigned char *next_instr, *cur_instr;
 	int opcode;
-	int oparg;
+	int oparg = 0;
 	object *name;
 	object *error_type, *error_value, *error_traceback;
 	
diff --git a/Python/getargs.c b/Python/getargs.c
index a73bc80..506cd38 100644
--- a/Python/getargs.c
+++ b/Python/getargs.c
@@ -685,12 +685,11 @@
 	char *message = NULL;
 	int min = -1;
 	int max = 0;
-	int level = 0;
 	char *formatsave = format;
 	int i, len, tplen, kwlen;
 	char *msg, *ks, **p;
 	int nkwds, pos, match, converted;
-	object *key, *value, *item;
+	object *key, *value;
 	
 	/* nested tuples cannot be parsed when using keyword arguments */
 	
@@ -831,9 +830,11 @@
 	
 	converted = 0;
 	for (i = tplen; i < nkwds; i++) {
+		object *item;
 		if (*format == '|')
 			format++;
-		if (item = PyMapping_GetItemString(keywords, kwlist[i])) {
+		item = PyMapping_GetItemString(keywords, kwlist[i]);
+		if (item != NULL) {
 			msg = convertitem(item, &format, p_va, levels, msgbuf);
 			if (msg) {
 				seterror(i+1, msg, levels, fname, message);
@@ -890,59 +891,59 @@
 	
 	case 'b': /* byte -- very short int */
 		{
-			va_arg(*p_va, char *);
+			(void) va_arg(*p_va, char *);
 			break;
 		}
 	
 	case 'h': /* short int */
 		{
-			va_arg(*p_va, short *);
+			(void) va_arg(*p_va, short *);
 			break;
 		}
 	
 	case 'i': /* int */
 		{
-			va_arg(*p_va, int *);
+			(void) va_arg(*p_va, int *);
 			break;
 		}
 	
 	case 'l': /* long int */
 		{
-			va_arg(*p_va, long *);
+			(void) va_arg(*p_va, long *);
 			break;
 		}
 	
 	case 'f': /* float */
 		{
-			va_arg(*p_va, float *);
+			(void) va_arg(*p_va, float *);
 			break;
 		}
 	
 	case 'd': /* double */
 		{
-			va_arg(*p_va, double *);
+			(void) va_arg(*p_va, double *);
 			break;
 		}
 	
 #ifndef WITHOUT_COMPLEX
 	case 'D': /* complex double */
 		{
-			va_arg(*p_va, Py_complex *);
+			(void) va_arg(*p_va, Py_complex *);
 			break;
 		}
 #endif /* WITHOUT_COMPLEX */
 	
 	case 'c': /* char */
 		{
-			va_arg(*p_va, char *);
+			(void) va_arg(*p_va, char *);
 			break;
 		}
 	
 	case 's': /* string */
 		{
-			va_arg(*p_va, char **);
+			(void) va_arg(*p_va, char **);
 			if (*format == '#') {
-				va_arg(*p_va, int *);
+				(void) va_arg(*p_va, int *);
 				format++;
 			}
 			break;
@@ -950,9 +951,9 @@
 	
 	case 'z': /* string */
 		{
-			va_arg(*p_va, char **);
+			(void) va_arg(*p_va, char **);
 			if (*format == '#') {
-				va_arg(*p_va, int *);
+				(void) va_arg(*p_va, int *);
 				format++;
 			}
 			break;
@@ -960,18 +961,16 @@
 	
 	case 'S': /* string object */
 		{
-			va_arg(*p_va, object **);
+			(void) va_arg(*p_va, object **);
 			break;
 		}
 	
 	case 'O': /* object */
 		{
-			typeobject *type;
-			object **p;
 			if (*format == '!') {
 				format++;
-				va_arg(*p_va, typeobject*);
-				va_arg(*p_va, object **);
+				(void) va_arg(*p_va, typeobject*);
+				(void) va_arg(*p_va, object **);
 			}
 #if 0
 /* I don't know what this is for */
@@ -979,19 +978,19 @@
 				inquiry pred = va_arg(*p_va, inquiry);
 				format++;
 				if ((*pred)(arg)) {
-					va_arg(*p_va, object **);
+					(void) va_arg(*p_va, object **);
 				}
 			}
 #endif
 			else if (*format == '&') {
 				typedef int (*converter)
 					PROTO((object *, void *));
-				va_arg(*p_va, converter);
-				va_arg(*p_va, void *);
+				(void) va_arg(*p_va, converter);
+				(void) va_arg(*p_va, void *);
 				format++;
 			}
 			else {
-				va_arg(*p_va, object **);
+				(void) va_arg(*p_va, object **);
 			}
 			break;
 		}
diff --git a/Python/import.c b/Python/import.c
index cd96951..de1772c 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -53,6 +53,10 @@
 #include "macglue.h"
 #endif
 
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
 extern long getmtime(); /* In getmtime.c */
 
 /* Magic word to reject .pyc files generated by other Python versions */
@@ -419,7 +423,7 @@
 	FILE **p_fp;
 {
 	int i, npath, len, namelen;
-	struct filedescr *fdp;
+	struct filedescr *fdp = NULL;
 	FILE *fp = NULL;
 
 #ifdef MS_COREDLL
diff --git a/Python/mystrtoul.c b/Python/mystrtoul.c
index 0939438..a869b46 100644
--- a/Python/mystrtoul.c
+++ b/Python/mystrtoul.c
@@ -112,7 +112,7 @@
     }
 
 /* do the conversion */
-    while (c = Py_CHARMASK(*str))
+    while ((c = Py_CHARMASK(*str)) != '\0')
     {
 	if (isdigit(c) && c - '0' < base)
 	    c -= '0';
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index 8219f75..7cdcf46 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -47,6 +47,10 @@
 #include "import.h"
 #include "marshal.h"
 
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
 #ifdef HAVE_SIGNAL_H
 #include <signal.h>
 #endif
diff --git a/Python/thread.c b/Python/thread.c
index 9349e58..0e6d6ee 100644
--- a/Python/thread.c
+++ b/Python/thread.c
@@ -45,6 +45,10 @@
 extern char *getenv();
 #endif
 
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
 #include "thread.h"
 
 #ifdef __ksr__
