diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2016-08-19 22:57:43 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2016-08-19 22:57:43 (GMT) |
commit | 71cb64acc27723fa4d648374d084a07030ab10fb (patch) | |
tree | d08a6bfdbb3b76b7b5dda4587469bccbdfc9d6f9 /Python | |
parent | df142fdc4bfc3816ad36b82a65e335757e011991 (diff) | |
download | cpython-71cb64acc27723fa4d648374d084a07030ab10fb.zip cpython-71cb64acc27723fa4d648374d084a07030ab10fb.tar.gz cpython-71cb64acc27723fa4d648374d084a07030ab10fb.tar.bz2 |
PyErr_PrintEx() now uses fast call
Issue #27128.
Diffstat (limited to 'Python')
-rw-r--r-- | Python/pythonrun.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/Python/pythonrun.c b/Python/pythonrun.c index 678ebfe..2968b34 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); |