diff -r 36f61661f71e Objects/abstract.c --- a/Objects/abstract.c Wed Sep 26 17:43:23 2012 +0300 +++ b/Objects/abstract.c Thu Sep 27 11:32:35 2012 +0300 @@ -1228,11 +1228,10 @@ nb = Py_TYPE(integral)->tp_as_number; if (nb->nb_int) { PyObject *as_int = nb->nb_int(integral); - Py_DECREF(integral); - if (!as_int) - return NULL; - if (PyLong_Check(as_int)) + if (!as_int || PyLong_Check(as_int)) { + Py_DECREF(integral); return as_int; + } Py_DECREF(as_int); } PyErr_Format(PyExc_TypeError, error_format, Py_TYPE(integral)->tp_name);