diff --git a/Python/ceval.c b/Python/ceval.c
index 972061d..1103dfc 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -721,7 +721,7 @@
 	consts = co->co_consts;
 	fastlocals = f->f_localsplus;
 	freevars = f->f_localsplus + f->f_nlocals;
-	first_instr = PyString_AS_STRING(co->co_code);
+	first_instr = (unsigned char*) PyString_AS_STRING(co->co_code);
 	/* An explanation is in order for the next line.
 
 	   f->f_lasti now refers to the index of the last instruction
diff --git a/Python/compile.c b/Python/compile.c
index 5781b21..476dbe6 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -662,7 +662,7 @@
 
 	/* Bypass optimization when the lineno table is too complex */
 	assert(PyString_Check(lineno_obj));
-	lineno = PyString_AS_STRING(lineno_obj);
+	lineno = (unsigned char*)PyString_AS_STRING(lineno_obj);
 	tabsiz = PyString_GET_SIZE(lineno_obj);
 	if (memchr(lineno, 255, tabsiz) != NULL)
 		goto exitUnchanged;
diff --git a/Python/marshal.c b/Python/marshal.c
index 7f38a46..3eb7b1e 100644
--- a/Python/marshal.c
+++ b/Python/marshal.c
@@ -169,14 +169,14 @@
 	}
 	else if (PyFloat_Check(v)) {
 		if (p->version > 1) {
-			char buf[8];
+			unsigned char buf[8];
 			if (_PyFloat_Pack8(PyFloat_AsDouble(v), 
 					   buf, 1) < 0) {
 				p->error = 1;
 				return;
 			}
 			w_byte(TYPE_BINARY_FLOAT, p);
-			w_string(buf, 8, p);
+			w_string((char*)buf, 8, p);
 		}
 		else {
 			char buf[256]; /* Plenty to format any double */
@@ -190,20 +190,20 @@
 #ifndef WITHOUT_COMPLEX
 	else if (PyComplex_Check(v)) {
 		if (p->version > 1) {
-			char buf[8];
+			unsigned char buf[8];
 			if (_PyFloat_Pack8(PyComplex_RealAsDouble(v),
 					   buf, 1) < 0) {
 				p->error = 1;
 				return;
 			}
 			w_byte(TYPE_BINARY_COMPLEX, p);
-			w_string(buf, 8, p);
+			w_string((char*)buf, 8, p);
 			if (_PyFloat_Pack8(PyComplex_ImagAsDouble(v), 
 					   buf, 1) < 0) {
 				p->error = 1;
 				return;
 			}
-			w_string(buf, 8, p);
+			w_string((char*)buf, 8, p);
 		}
 		else {
 			char buf[256]; /* Plenty to format any double */
@@ -556,9 +556,9 @@
 
 	case TYPE_BINARY_FLOAT:
 		{
-			char buf[8];
+			unsigned char buf[8];
 			double x;
-			if (r_string(buf, 8, p) != 8) {
+			if (r_string((char*)buf, 8, p) != 8) {
 				PyErr_SetString(PyExc_EOFError,
 					"EOF read where object expected");
 				return NULL;
@@ -600,9 +600,9 @@
 
 	case TYPE_BINARY_COMPLEX:
 		{
-			char buf[8];
+			unsigned char buf[8];
 			Py_complex c;
-			if (r_string(buf, 8, p) != 8) {
+			if (r_string((char*)buf, 8, p) != 8) {
 				PyErr_SetString(PyExc_EOFError,
 					"EOF read where object expected");
 				return NULL;
@@ -611,7 +611,7 @@
 			if (c.real == -1.0 && PyErr_Occurred()) {
 				return NULL;
 			}
-			if (r_string(buf, 8, p) != 8) {
+			if (r_string((char*)buf, 8, p) != 8) {
 				PyErr_SetString(PyExc_EOFError,
 					"EOF read where object expected");
 				return NULL;
