In b_setitem(), instead of the platform dependent CHAR_MIN and
CHAR_MAX, use hardcoded -128 and 127.  This may seem strange, unless
you realize that we're talking about signed bytes here!  Bytes are
always 8 bits and 2's complement.  CHAR_MIN and CHAR_MAX are
properties of the char data type, which is guaranteed to hold at least
8 bits anyway.

Otherwise you'd get failing tests on platforms where unsigned char is
the default (e.g. AIX).

Thanks, Vladimir Marangozov, for finding this nit!
diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c
index ba5105c..7bc7e73 100644
--- a/Modules/arraymodule.c
+++ b/Modules/arraymodule.c
@@ -99,12 +99,12 @@
 	   the overflow checking */
 	if (!PyArg_Parse(v, "h;array item must be integer", &x))
 		return -1;
-	else if (x < CHAR_MIN) {
+	else if (x < -128) {
 		PyErr_SetString(PyExc_OverflowError,
 			"signed char is less than minimum");
 		return -1;
 	}
-	else if (x > CHAR_MAX) {
+	else if (x > 127) {
 		PyErr_SetString(PyExc_OverflowError,
 			"signed char is greater than maximum");
 		return -1;