diff --git a/Objects/typeobject.c b/Objects/typeobject.c
index ac1e064..00ae88b 100644
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -1561,11 +1561,11 @@
 /* Replace Unicode objects in slots.  */
 
 static PyObject *
-_unicode_to_string(PyObject *slots, int nslots)
+_unicode_to_string(PyObject *slots, Py_ssize_t nslots)
 {
 	PyObject *tmp = slots;
 	PyObject *o, *o1;
-	int i;
+	Py_ssize_t i;
 	ssizessizeargfunc copy = slots->ob_type->tp_as_sequence->sq_slice;
 	for (i = 0; i < nslots; i++) {
 		if (PyUnicode_Check(o = PyTuple_GET_ITEM(tmp, i))) {
@@ -2428,7 +2428,7 @@
 same_slots_added(PyTypeObject *a, PyTypeObject *b)
 {
 	PyTypeObject *base = a->tp_base;
-	int size;
+	Py_ssize_t size;
 
 	if (base != b->tp_base)
 		return 0;
@@ -2904,7 +2904,7 @@
 static void
 inherit_special(PyTypeObject *type, PyTypeObject *base)
 {
-	int oldsize, newsize;
+	Py_ssize_t oldsize, newsize;
 
 	/* Special flag magic */
 	if (!type->tp_as_buffer && base->tp_as_buffer) {
@@ -3316,7 +3316,8 @@
 static int
 add_subclass(PyTypeObject *base, PyTypeObject *type)
 {
-	int i;
+	Py_ssize_t i;
+	int result;
 	PyObject *list, *ref, *new;
 
 	list = base->tp_subclasses;
@@ -3334,9 +3335,9 @@
 		if (PyWeakref_GET_OBJECT(ref) == Py_None)
 			return PyList_SetItem(list, i, new);
 	}
-	i = PyList_Append(list, new);
+	result = PyList_Append(list, new);
 	Py_DECREF(new);
-	return i;
+	return result;
 }
 
 static void
@@ -4160,7 +4161,7 @@
 				return NULL;
 			}
 		}
-		ival = PyInt_FromLong(i);
+		ival = PyInt_FromSsize_t(i);
 		if (ival != NULL) {
 			args = PyTuple_New(1);
 			if (args != NULL) {
