Use Py_ssize_t
diff --git a/Objects/setobject.c b/Objects/setobject.c
index ff2e17f..f10fdd7 100644
--- a/Objects/setobject.c
+++ b/Objects/setobject.c
@@ -62,7 +62,7 @@
 	register Py_ssize_t i;
 	register size_t perturb;
 	register setentry *freeslot;
-	register unsigned int mask = so->mask;
+	register size_t mask = so->mask;
 	setentry *table = so->table;
 	register setentry *entry;
 	register int cmp;
@@ -140,7 +140,7 @@
 	register Py_ssize_t i;
 	register size_t perturb;
 	register setentry *freeslot;
-	register unsigned int mask = so->mask;
+	register size_t mask = so->mask;
 	setentry *table = so->table;
 	register setentry *entry;
 
@@ -221,11 +221,11 @@
 actually be smaller than the old one.
 */
 static int
-set_table_resize(PySetObject *so, int minused)
+set_table_resize(PySetObject *so, Py_ssize_t minused)
 {
-	int newsize;
+	Py_ssize_t newsize;
 	setentry *oldtable, *newtable, *entry;
-	int i;
+	Py_ssize_t i;
 	int is_oldtable_malloced;
 	setentry small_copy[PySet_MINSIZE];
 
@@ -314,7 +314,7 @@
 static int
 set_add_entry(register PySetObject *so, setentry *entry)
 {
-	register int n_used;
+	register Py_ssize_t n_used;
 
 	assert(so->fill <= so->mask);  /* at least one empty slot */
 	n_used = so->used;
@@ -330,7 +330,7 @@
 set_add_key(register PySetObject *so, PyObject *key)
 {
 	register long hash;
-	register int n_used;
+	register Py_ssize_t n_used;
 
 	if (!PyString_CheckExact(key) ||
 	    (hash = ((PyStringObject *) key)->ob_shash) == -1) {
@@ -403,10 +403,10 @@
 {
 	setentry *entry, *table;
 	int table_is_malloced;
-	int fill;
+	Py_ssize_t fill;
 	setentry small_copy[PySet_MINSIZE];
 #ifdef Py_DEBUG
-	int i, n;
+	Py_ssize_t i, n;
 	assert (PyAnySet_Check(so));
 
 	n = so->mask + 1;
@@ -465,7 +465,7 @@
 /*
  * Iterate over a set table.  Use like so:
  *
- *     int pos;
+ *     Py_ssize_t pos;
  *     setentry *entry;
  *     pos = 0;   # important!  pos should not otherwise be changed by you
  *     while (set_next(yourset, &pos, &entry)) {
@@ -479,7 +479,7 @@
 set_next(PySetObject *so, Py_ssize_t *pos_ptr, setentry **entry_ptr)
 {
 	Py_ssize_t i;
-	int mask;
+	Py_ssize_t mask;
 	register setentry *table;
 
 	assert (PyAnySet_Check(so));
@@ -501,7 +501,7 @@
 set_dealloc(PySetObject *so)
 {
 	register setentry *entry;
-	int fill = so->fill;
+	Py_ssize_t fill = so->fill;
 	PyObject_GC_UnTrack(so);
 	Py_TRASHCAN_SAFE_BEGIN(so)
 	if (so->weakreflist != NULL)
@@ -570,7 +570,7 @@
 set_merge(PySetObject *so, PyObject *otherset)
 {
 	PySetObject *other;
-	register int i;
+	register Py_ssize_t i;
 	register setentry *entry;
 
 	assert (PyAnySet_Check(so));
@@ -637,7 +637,7 @@
 static PyObject *
 set_pop(PySetObject *so)
 {
-	register int i = 0;
+	register Py_ssize_t i = 0;
 	register setentry *entry;
 	PyObject *key;
 
@@ -655,7 +655,7 @@
 	 */
 	entry = &so->table[0];
 	if (entry->key == NULL || entry->key == dummy) {
-		i = (int)entry->hash;
+		i = entry->hash;
 		/* The hash field may be a real hash value, or it may be a
 		 * legit search finger, or it may be a once-legit search
 		 * finger that's out of bounds now because it wrapped around
@@ -730,9 +730,9 @@
 typedef struct {
 	PyObject_HEAD
 	PySetObject *si_set; /* Set to NULL when iterator is exhausted */
-	int si_used;
-	int si_pos;
-	long len;
+	Py_ssize_t si_used;
+	Py_ssize_t si_pos;
+	Py_ssize_t len;
 } setiterobject;
 
 static void
@@ -745,7 +745,7 @@
 static PyObject *
 setiter_len(setiterobject *si)
 {
-	long len = 0;
+	Py_ssize_t len = 0;
 	if (si->si_set != NULL && si->si_used == si->si_set->used)
 		len = si->len;
 	return PyInt_FromLong(len);
@@ -761,7 +761,7 @@
 static PyObject *setiter_iternext(setiterobject *si)
 {
 	PyObject *key;
-	register int i, mask;
+	register Py_ssize_t i, mask;
 	register setentry *entry;
 	PySetObject *so = si->si_set;
 
@@ -1007,7 +1007,7 @@
 static void
 set_swap_bodies(PySetObject *a, PySetObject *b)
 {
-	int t;
+	Py_ssize_t t;
 	setentry *u;
 	setentry *(*f)(PySetObject *so, PyObject *key, long hash);
 	setentry tab[PySet_MINSIZE];
@@ -2064,7 +2064,7 @@
 static PyObject *
 test_c_api(PySetObject *so)
 {
-	int count;
+	Py_ssize_t count;
 	char *s;
 	Py_ssize_t i;
 	PyObject *elem, *dup, *t, *f, *dup2;