summaryrefslogtreecommitdiffstats
path: root/Python/pythonrun.c
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2001-03-23 17:54:43 (GMT)
committerGuido van Rossum <guido@python.org>2001-03-23 17:54:43 (GMT)
commit66e8e86cf8a2f48a4aca1b05cef7fa7f6dd3ca48 (patch)
tree1bb46efaedd2892a9310e193a641286f7e99d7eb /Python/pythonrun.c
parent62d248892f8782d01cfeb1951d53eaeac81750fe (diff)
downloadcpython-66e8e86cf8a2f48a4aca1b05cef7fa7f6dd3ca48.zip
cpython-66e8e86cf8a2f48a4aca1b05cef7fa7f6dd3ca48.tar.gz
cpython-66e8e86cf8a2f48a4aca1b05cef7fa7f6dd3ca48.tar.bz2
Finishing touch to Ping's changes. This is a patch that Ping sent me
but apparently he had to go to school, so I am checking it in for him. This makes PyRun_HandleSystemExit() a static instead, called handle_system_exit(), and let it use the current exception rather than passing in an exception. This slightly simplifies the code.
Diffstat (limited to 'Python/pythonrun.c')
-rw-r--r--Python/pythonrun.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index f1ed396..9bb20de 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -798,9 +798,11 @@ print_error_text(PyObject *f, int offset, char *text)
PyFile_WriteString("^\n", f);
}
-void
-PyRun_HandleSystemExit(PyObject* value)
+static void
+handle_system_exit(void)
{
+ PyObject *exception, *value, *tb;
+ PyErr_Fetch(&exception, &value, &tb);
if (Py_FlushLine())
PyErr_Clear();
fflush(stdout);
@@ -831,15 +833,14 @@ void
PyErr_PrintEx(int set_sys_last_vars)
{
PyObject *exception, *v, *tb, *hook;
+
+ if (PyErr_ExceptionMatches(PyExc_SystemExit)) {
+ handle_system_exit();
+ }
PyErr_Fetch(&exception, &v, &tb);
PyErr_NormalizeException(&exception, &v, &tb);
-
if (exception == NULL)
return;
-
- if (PyErr_GivenExceptionMatches(exception, PyExc_SystemExit)) {
- PyRun_HandleSystemExit(v);
- }
if (set_sys_last_vars) {
PySys_SetObject("last_type", exception);
PySys_SetObject("last_value", v);
@@ -852,12 +853,11 @@ PyErr_PrintEx(int set_sys_last_vars)
PyObject *result = PyEval_CallObject(hook, args);
if (result == NULL) {
PyObject *exception2, *v2, *tb2;
+ if (PyErr_ExceptionMatches(PyExc_SystemExit)) {
+ handle_system_exit();
+ }
PyErr_Fetch(&exception2, &v2, &tb2);
PyErr_NormalizeException(&exception2, &v2, &tb2);
- if (PyErr_GivenExceptionMatches(
- exception2, PyExc_SystemExit)) {
- PyRun_HandleSystemExit(v2);
- }
if (Py_FlushLine())
PyErr_Clear();
fflush(stdout);