Remove the next() method -- one is supplied automatically by
PyType_Ready() because the tp_iternext slot is set (fortunately,
because using the tp_iternext implementation for the the next()
implementation is buggy).  Also changed the allocation order in
enum_next() so that the underlying iterator is only moved ahead when
we have successfully allocated the result tuple and index.
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 */