From: Victor Stinner Date: Fri, 19 Aug 2016 22:57:43 +0000 (+0200) Subject: PyErr_PrintEx() now uses fast call X-Git-Tag: v3.6.0b1~640 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=71cb64acc27723fa4d648374d084a07030ab10fb;p=python PyErr_PrintEx() now uses fast call Issue #27128. --- diff --git a/Python/pythonrun.c b/Python/pythonrun.c index 678ebfe5f6..2968b34cc8 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -630,8 +630,13 @@ PyErr_PrintEx(int set_sys_last_vars) } 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 @@ PyErr_PrintEx(int set_sys_last_vars) Py_XDECREF(tb2); } Py_XDECREF(result); - Py_XDECREF(args); } else { PySys_WriteStderr("sys.excepthook is missing\n"); PyErr_Display(exception, v, tb);