diff --git a/Objects/enumobject.c b/Objects/enumobject.c
index 148ac3c..f69a002 100644
--- a/Objects/enumobject.c
+++ b/Objects/enumobject.c
@@ -54,25 +54,26 @@
 {
 	PyObject *result;
 	PyObject *next_index;
-
-	PyObject *next_item = PyIter_Next(en->en_sit);
-	if (next_item == NULL)
-		return NULL;
+	PyObject *next_item;
 
 	result = PyTuple_New(2);
-	if (result == NULL) {
-		Py_DECREF(next_item);
+	if (result == NULL)
+		return NULL;
+
+	next_index = PyInt_FromLong(en->en_index);
+	if (next_index == NULL) {
+		Py_DECREF(result);
 		return NULL;
 	}
+	PyTuple_SET_ITEM(result, 0, next_index);
 
-	next_index = PyInt_FromLong(en->en_index++);
-	if (next_index == NULL) {
-		Py_DECREF(next_item);
+	next_item = PyIter_Next(en->en_sit);
+	if (next_item == NULL) {
 		Py_DECREF(result);
 		return NULL;
 	}
 
-	PyTuple_SET_ITEM(result, 0, next_index);
+	en->en_index++;
 	PyTuple_SET_ITEM(result, 1, next_item);
 	return result;
 }
@@ -84,12 +85,6 @@
 	return en;
 }
 
-static PyMethodDef enum_methods[] = {
-	{"next",    (PyCFunction)enum_next, METH_NOARGS,
-	 "return the next (index, value) pair, or raise StopIteration"},
-	{NULL,      NULL}       /* sentinel */
-};
-
 PyDoc_STRVAR(enum_doc,
 "enumerate(iterable) -> create an enumerating-iterator");
 
@@ -124,7 +119,7 @@
 	0,                              /* tp_weaklistoffset */
 	(getiterfunc)enum_getiter,      /* tp_iter */
 	(iternextfunc)enum_next,        /* tp_iternext */
-	enum_methods,                   /* tp_methods */
+	0,                              /* tp_methods */
 	0,                              /* tp_members */
 	0,                              /* tp_getset */
 	0,                              /* tp_base */
