Fix more places in Objects/longobject.c where it's silently assumed that
sizeof(digit) < sizeof(int).
diff --git a/Objects/longobject.c b/Objects/longobject.c
index ead6398..48a3cde 100644
--- a/Objects/longobject.c
+++ b/Objects/longobject.c
@@ -47,7 +47,7 @@
 }
 #define CHECK_SMALL_INT(ival) \
 	do if (-NSMALLNEGINTS <= ival && ival < NSMALLPOSINTS) { \
-		return get_small_int((int)ival); \
+		return get_small_int((sdigit)ival); \
 	} while(0)
 
 static PyLongObject * 
@@ -365,7 +365,7 @@
 
 	switch (i) {
 	case -1:
-		res = -v->ob_digit[0];
+		res = -(sdigit)v->ob_digit[0];
 		break;
 	case 0:
 		res = 0;
@@ -440,7 +440,7 @@
 	v = (PyLongObject *)vv;
 	i = Py_SIZE(v);
 	switch (i) {
-	case -1: return -v->ob_digit[0];
+	case -1: return -(sdigit)v->ob_digit[0];
 	case 0: return 0;
 	case 1: return v->ob_digit[0];
 	}
@@ -1235,7 +1235,7 @@
 
 	v = (PyLongObject*)vv;
 	switch(Py_SIZE(v)) {
-	case -1: return -v->ob_digit[0];
+	case -1: return -(sdigit)v->ob_digit[0];
 	case 0: return 0;
 	case 1: return v->ob_digit[0];
 	}
@@ -2279,7 +2279,7 @@
 	   of mapping keys will turn out weird */
 	i = Py_SIZE(v);
 	switch(i) {
-	case -1: return v->ob_digit[0]==1 ? -2 : -v->ob_digit[0];
+	case -1: return v->ob_digit[0]==1 ? -2 : -(sdigit)v->ob_digit[0];
 	case 0: return 0;
 	case 1: return v->ob_digit[0];
 	}