(original) (raw)
changeset: 84641:82b2ee140994 user: Victor Stinner victor.stinner@gmail.com date: Mon Jul 15 17:50:07 2013 +0200 files: Objects/abstract.c description: 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 -r 27f8ccce687d -r 82b2ee140994 Objects/abstract.c --- a/Objects/abstract.c Mon Jul 15 17:47:39 2013 +0200 +++ b/Objects/abstract.c Mon Jul 15 17:50:07 2013 +0200 @@ -2104,10 +2104,16 @@ 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", /victor.stinner@gmail.com