Mercurial > cpython-lru_cache-weakref
changeset 84641:82b2ee140994
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.
| author | Victor Stinner <victor.stinner@gmail.com> |
|---|---|
| date | Mon, 15 Jul 2013 17:50:07 +0200 |
| parents | 27f8ccce687d |
| children | ef0dbe00760e |
| files | Objects/abstract.c |
| diffstat | 1 files changed, 7 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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",
