diff --git a/Modules/cPickle.c b/Modules/cPickle.c
index fbb0c20..90e5610 100644
--- a/Modules/cPickle.c
+++ b/Modules/cPickle.c
@@ -1039,7 +1039,7 @@
         p++;
 
         /* Second byte */
-        *p = ((e&0xF)<<4) | (fhi>>24);
+        *p = (char) (((e&0xF)<<4) | (fhi>>24));
         p++;
 
         /* Third byte */
@@ -1876,7 +1876,7 @@
 static PyObject *
 Pickle_getvalue(Picklerobject *self, PyObject *args) {
   int l, i, rsize, ssize, clear=1, lm;
-  long ik, id;
+  long ik;
   PyObject *k, *r;
   char *s, *p, *have_get;
   Pdata *data;
@@ -2817,7 +2817,7 @@
 static int
 load_inst(Unpicklerobject *self) {
     PyObject *tup, *class, *obj, *module_name, *class_name;
-    int i, j, len;
+    int i, len;
     char *s;
 
     if ((i = marker(self)) < 0) return -1;
@@ -2912,7 +2912,7 @@
 static int
 load_binpersid(Unpicklerobject *self) {
     PyObject *pid = 0;
-    int len, res = -1;
+    int res = -1;
 
     if (self->pers_func) {
         PDATA_POP(self->stack, pid);
@@ -2963,7 +2963,7 @@
 
 static int
 load_pop_mark(Unpicklerobject *self) {
-    int i, len;
+    int i;
 
     if ((i = marker(self)) < 0)
         return -1;
@@ -3230,7 +3230,7 @@
 load_build(Unpicklerobject *self) {
     PyObject *value = 0, *inst = 0, *instdict = 0, *d_key = 0, *d_value = 0, 
              *junk = 0, *__setstate__ = 0;
-    int len, i, r = 0;
+    int i, r = 0;
 
     if (self->stack->length < 2) return stackUnderflow();
     PDATA_POP(self->stack, value);
@@ -3310,7 +3310,6 @@
 static PyObject *
 load(Unpicklerobject *self) {
     PyObject *stack = 0, *err = 0, *val = 0;
-    int len;
     char *s;
 
     self->num_marks = 0;
@@ -3540,7 +3539,7 @@
 
 static int
 noload_obj(Unpicklerobject *self) {
-    int i, len;
+    int i;
 
     if ((i = marker(self)) < 0) return -1;
     return Pdata_clear(self->stack, i+1);
@@ -3549,7 +3548,7 @@
 
 static int
 noload_inst(Unpicklerobject *self) {
-    int i, j;
+    int i;
     char *s;
 
     if ((i = marker(self)) < 0) return -1;
@@ -3572,7 +3571,6 @@
 
 static int
 noload_reduce(Unpicklerobject *self) {
-    int len;
 
     if (self->stack->length < 2) return stackUnderflow();
     Pdata_clear(self->stack, self->stack->length-2);
@@ -3582,7 +3580,6 @@
 
 static int
 noload_build(Unpicklerobject *self) {
-  int len;
 
   if (self->stack->length < 1) return stackUnderflow();
   Pdata_clear(self->stack, self->stack->length-1);
@@ -3593,7 +3590,6 @@
 static PyObject *
 noload(Unpicklerobject *self) {
     PyObject *stack = 0, *err = 0, *val = 0;
-    int len;
     char *s;
 
     self->num_marks = 0;
