diff --git a/Objects/stringobject.c b/Objects/stringobject.c
index 3ba85e6..7ba15a0 100644
--- a/Objects/stringobject.c
+++ b/Objects/stringobject.c
@@ -4992,7 +4992,7 @@
 
 typedef struct {
 	PyObject_HEAD
-	long it_index;
+	Py_ssize_t it_index;
 	PyStringObject *it_seq; /* Set to NULL when iterator is exhausted */
 } striterobject;
 
@@ -5024,7 +5024,8 @@
 	assert(PyString_Check(seq));
 
 	if (it->it_index < PyString_GET_SIZE(seq)) {
-		item = PyString_FromStringAndSize(PyString_AS_STRING(seq)+it->it_index, 1);
+		item = PyString_FromStringAndSize(
+			PyString_AS_STRING(seq)+it->it_index, 1);
 		if (item != NULL)
 			++it->it_index;
 		return item;
@@ -5044,18 +5045,20 @@
 	return PyInt_FromSsize_t(len);
 }
 
-PyDoc_STRVAR(length_hint_doc, "Private method returning an estimate of len(list(it)).");
+PyDoc_STRVAR(length_hint_doc,
+	     "Private method returning an estimate of len(list(it)).");
 
 static PyMethodDef striter_methods[] = {
-	{"__length_hint__", (PyCFunction)striter_len, METH_NOARGS, length_hint_doc},
+	{"__length_hint__", (PyCFunction)striter_len, METH_NOARGS,
+	 length_hint_doc},
  	{NULL,		NULL}		/* sentinel */
 };
 
 PyTypeObject PyStringIter_Type = {
 	PyObject_HEAD_INIT(&PyType_Type)
 	0,					/* ob_size */
-	"striterator",			/* tp_name */
-	sizeof(striterobject),		/* tp_basicsize */
+	"striterator",				/* tp_name */
+	sizeof(striterobject),			/* tp_basicsize */
 	0,					/* tp_itemsize */
 	/* methods */
 	(destructor)striter_dealloc,		/* tp_dealloc */
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index a87916c..e63e629 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -7969,7 +7969,7 @@
 
 typedef struct {
 	PyObject_HEAD
-	long it_index;
+	Py_ssize_t it_index;
 	PyUnicodeObject *it_seq; /* Set to NULL when iterator is exhausted */
 } unicodeiterobject;
 
@@ -8001,7 +8001,8 @@
 	assert(PyUnicode_Check(seq));
 
 	if (it->it_index < PyUnicode_GET_SIZE(seq)) {
-		item = PyUnicode_FromUnicode(PyUnicode_AS_UNICODE(seq)+it->it_index, 1);
+		item = PyUnicode_FromUnicode(
+                    PyUnicode_AS_UNICODE(seq)+it->it_index, 1);
 		if (item != NULL)
 			++it->it_index;
 		return item;
@@ -8024,7 +8025,8 @@
 PyDoc_STRVAR(length_hint_doc, "Private method returning an estimate of len(list(it)).");
 
 static PyMethodDef unicodeiter_methods[] = {
-	{"__length_hint__", (PyCFunction)unicodeiter_len, METH_NOARGS, length_hint_doc},
+	{"__length_hint__", (PyCFunction)unicodeiter_len, METH_NOARGS,
+         length_hint_doc},
  	{NULL,		NULL}		/* sentinel */
 };
 
@@ -8035,7 +8037,7 @@
 	sizeof(unicodeiterobject),		/* tp_basicsize */
 	0,					/* tp_itemsize */
 	/* methods */
-	(destructor)unicodeiter_dealloc,		/* tp_dealloc */
+	(destructor)unicodeiter_dealloc,	/* tp_dealloc */
 	0,					/* tp_print */
 	0,					/* tp_getattr */
 	0,					/* tp_setattr */
