Use safer comparisons (only matters when sizeof(int) != sizeof(size_t)). fread
and fwrite return size_t, so it is safer to cast up to the largest type for the
comparison. I believe the cast is required at all to remove compiler warnings.
diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c
index ec1b08d..6648c9c 100644
--- a/Modules/arraymodule.c
+++ b/Modules/arraymodule.c
@@ -1039,8 +1039,8 @@
 		return NULL;
 	}
 	if (self->ob_size > 0) {
-		if ((int)fwrite(self->ob_item, self->ob_descr->itemsize,
-			   self->ob_size, fp) != self->ob_size) {
+		if (fwrite(self->ob_item, self->ob_descr->itemsize,
+			   self->ob_size, fp) != (size_t)self->ob_size) {
 			PyErr_SetFromErrno(PyExc_IOError);
 			clearerr(fp);
 			return NULL;
diff --git a/Modules/cPickle.c b/Modules/cPickle.c
index 5a136b9..b64b1f1 100644
--- a/Modules/cPickle.c
+++ b/Modules/cPickle.c
@@ -407,7 +407,7 @@
         return 0;
     }
 
-    if ((int)fwrite(s, sizeof(char), n, self->fp) != n) {
+    if (fwrite(s, sizeof(char), n, self->fp) != (size_t)n) {
         PyErr_SetFromErrno(PyExc_IOError);
         return -1;
     }
@@ -503,7 +503,7 @@
         self->buf_size = n;
     }
             
-    if ((int)fread(self->buf, sizeof(char), n, self->fp) != n) {  
+    if (fread(self->buf, sizeof(char), n, self->fp) != (size_t)n) {
         if (feof(self->fp)) {
             PyErr_SetNone(PyExc_EOFError);
             return -1;