summaryrefslogtreecommitdiffstats
path: root/Python/pythonrun.c
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2016-08-19 22:57:43 (GMT)
committerVictor Stinner <victor.stinner@gmail.com>2016-08-19 22:57:43 (GMT)
commit71cb64acc27723fa4d648374d084a07030ab10fb (patch)
treed08a6bfdbb3b76b7b5dda4587469bccbdfc9d6f9 /Python/pythonrun.c
parentdf142fdc4bfc3816ad36b82a65e335757e011991 (diff)
downloadcpython-71cb64acc27723fa4d648374d084a07030ab10fb.zip
cpython-71cb64acc27723fa4d648374d084a07030ab10fb.tar.gz
cpython-71cb64acc27723fa4d648374d084a07030ab10fb.tar.bz2
PyErr_PrintEx() now uses fast call
Issue #27128.
Diffstat (limited to 'Python/pythonrun.c')
-rw-r--r--Python/pythonrun.c10
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);