Commit 71cb64ac authored by Victor Stinner's avatar Victor Stinner

PyErr_PrintEx() now uses fast call

Issue #27128.
parent df142fdc
...@@ -630,8 +630,13 @@ PyErr_PrintEx(int set_sys_last_vars) ...@@ -630,8 +630,13 @@ PyErr_PrintEx(int set_sys_last_vars)
} }
hook = _PySys_GetObjectId(&PyId_excepthook); hook = _PySys_GetObjectId(&PyId_excepthook);
if (hook) { if (hook) {
PyObject *args = PyTuple_Pack(3, exception, v, tb); PyObject* stack[3];
PyObject *result = PyEval_CallObject(hook, args); PyObject *result;
stack[0] = exception;
stack[1] = v;
stack[2] = tb;
result = _PyObject_FastCall(hook, stack, 3, NULL);
if (result == NULL) { if (result == NULL) {
PyObject *exception2, *v2, *tb2; PyObject *exception2, *v2, *tb2;
if (PyErr_ExceptionMatches(PyExc_SystemExit)) { if (PyErr_ExceptionMatches(PyExc_SystemExit)) {
...@@ -660,7 +665,6 @@ PyErr_PrintEx(int set_sys_last_vars) ...@@ -660,7 +665,6 @@ PyErr_PrintEx(int set_sys_last_vars)
Py_XDECREF(tb2); Py_XDECREF(tb2);
} }
Py_XDECREF(result); Py_XDECREF(result);
Py_XDECREF(args);
} else { } else {
PySys_WriteStderr("sys.excepthook is missing\n"); PySys_WriteStderr("sys.excepthook is missing\n");
PyErr_Display(exception, v, tb); PyErr_Display(exception, v, tb);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment