changeset: 102784:e5b24f595235 user: Victor Stinner date: Sat Aug 20 00:57:43 2016 +0200 files: Python/pythonrun.c description: PyErr_PrintEx() now uses fast call Issue #27128. diff -r 0da1ce362d15 -r e5b24f595235 Python/pythonrun.c --- a/Python/pythonrun.c Sat Aug 20 00:44:42 2016 +0200 +++ b/Python/pythonrun.c Sat Aug 20 00:57:43 2016 +0200 @@ -630,8 +630,13 @@ } hook = _PySys_GetObjectId(&PyId_excepthook); if (hook) { - PyObject *args = PyTuple_Pack(3, exception, v, tb); - PyObject *result = PyEval_CallObject(hook, args); + PyObject* stack[3]; + PyObject *result; + + stack[0] = exception; + stack[1] = v; + stack[2] = tb; + result = _PyObject_FastCall(hook, stack, 3, NULL); if (result == NULL) { PyObject *exception2, *v2, *tb2; if (PyErr_ExceptionMatches(PyExc_SystemExit)) { @@ -660,7 +665,6 @@ Py_XDECREF(tb2); } Py_XDECREF(result); - Py_XDECREF(args); } else { PySys_WriteStderr("sys.excepthook is missing\n"); PyErr_Display(exception, v, tb);