Strange control flow in PyInt_AsLong.  When nb_int is called inside
the PyInt_AsLong function, and this returns a long, the value is first
retrieved with PyLong_AsLong, but afterwards overwritten by a call to
PyInt_AS_LONG.

Fixes SF #690253.
diff --git a/Objects/intobject.c b/Objects/intobject.c
index fee7e4e..611aedf 100644
--- a/Objects/intobject.c
+++ b/Objects/intobject.c
@@ -162,10 +162,10 @@
 		if (PyLong_Check(io)) {
 			/* got a long? => retry int conversion */
 			val = PyLong_AsLong((PyObject *)io);
-			if (PyErr_Occurred()) {
-				Py_DECREF(io);
+			Py_DECREF(io);
+			if ((val == -1) && PyErr_Occurred())
 				return -1;
-			}
+			return val;
 		}
 		else
 		{