From 3de58698647221df4dc0d198bb512e7e80eec818 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Mon, 15 Jul 2013 17:50:07 +0200 Subject: 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. --- Objects/abstract.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Objects/abstract.c b/Objects/abstract.c index 244dcaf..6896600 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", -- cgit v0.12