From: Victor Stinner Date: Mon, 15 Jul 2013 15:50:07 +0000 (+0200) Subject: Issue #18408: PyObject_Call() now fails with an assertion error in debug mode X-Git-Tag: v3.4.0a1~205 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3de58698647221df4dc0d198bb512e7e80eec818;p=python Issue #18408: PyObject_Call() now fails with an assertion error in debug mode if the function called failed whereas no exception was raised, to detect bugs earlier. --- diff --git a/Objects/abstract.c b/Objects/abstract.c index 244dcafc4b..6896600eba 100644 --- a/Objects/abstract.c +++ b/Objects/abstract.c @@ -2104,10 +2104,16 @@ PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) return NULL; result = (*call)(func, arg, kw); Py_LeaveRecursiveCall(); - if (result == NULL && !PyErr_Occurred()) +#ifdef NDEBUG + if (result == NULL && !PyErr_Occurred()) { PyErr_SetString( PyExc_SystemError, "NULL result without error in PyObject_Call"); + } +#else + if (result == NULL) + assert(PyErr_Occurred()); +#endif return result; } PyErr_Format(PyExc_TypeError, "'%.200s' object is not callable",