diff --git a/Objects/complexobject.c b/Objects/complexobject.c
index e7d0898..175933a 100644
--- a/Objects/complexobject.c
+++ b/Objects/complexobject.c
@@ -532,20 +532,6 @@
 	return NULL;
 }
 
-
-static object *
-complex_new(self, args)
-	object *self;
-	object *args;
-{
-	Py_complex cval;
-
-	cval.imag = 0.;
-	if (!PyArg_ParseTuple(args, "d|d", &cval.real, &cval.imag))
-		return NULL;
-	return newcomplexobject(cval);
-}
-
 static object *
 complex_conjugate(self)
 	object *self;
diff --git a/Objects/frameobject.c b/Objects/frameobject.c
index ae18331..9d80e1f 100644
--- a/Objects/frameobject.c
+++ b/Objects/frameobject.c
@@ -154,7 +154,7 @@
 	if ((back != NULL && !is_frameobject(back)) ||
 		code == NULL || !is_codeobject(code) ||
 		globals == NULL || !is_dictobject(globals) ||
-		locals != NULL && !is_dictobject(locals) ||
+		(locals != NULL && !is_dictobject(locals)) ||
 		nvalues < 0 || nblocks < 0) {
 		err_badcall();
 		return NULL;
diff --git a/Objects/object.c b/Objects/object.c
index 2bc1ba4..0af31ba 100644
--- a/Objects/object.c
+++ b/Objects/object.c
@@ -626,8 +626,8 @@
 
 
 /* Hack to force loading of cobject.o */
-static PyTypeObject *cobject_hack = &PyCObject_Type;
+PyTypeObject *_Py_cobject_hack = &PyCObject_Type;
 
 
 /* Hack to force loading of abstract.o */
-static int (*abstract_hack) FPROTO((PyObject *)) = &PyObject_Length;
+int (*_Py_abstract_hack) FPROTO((PyObject *)) = &PyObject_Length;
diff --git a/Objects/rangeobject.c b/Objects/rangeobject.c
index caadc77..ee7af08 100644
--- a/Objects/rangeobject.c
+++ b/Objects/rangeobject.c
@@ -98,7 +98,7 @@
 			if (j > 0 || i > 0)
 				fprintf(fp, ", ");
 
-			fprintf(fp, "%d", r->start + j * r->step);
+			fprintf(fp, "%ld", r->start + j * r->step);
 		}
 
 	if (r->len == 1 && r->reps == 1)
diff --git a/Objects/stringobject.c b/Objects/stringobject.c
index 3e0f04e..b880891 100644
--- a/Objects/stringobject.c
+++ b/Objects/stringobject.c
@@ -669,17 +669,17 @@
 		else {
 			/* Got a format specifier */
 			int flags = 0;
-			char *fmtstart = fmt++;
 			int width = -1;
 			int prec = -1;
 			int size = 0;
 			int c = '\0';
 			int fill;
-			object *v;
+			object *v = NULL;
 			object *temp = NULL;
 			char *buf;
 			int sign;
 			int len;
+			fmt++;
 			if (*fmt == '(') {
 				char *keystart;
 				int keylen;
