diff options
| author | Guido van Rossum <guido@python.org> | 1995-03-17 10:42:27 (GMT) |
|---|---|---|
| committer | Guido van Rossum <guido@python.org> | 1995-03-17 10:42:27 (GMT) |
| commit | 385e7c69198510a1aa3a50c82f0d458eb34cc5e6 (patch) | |
| tree | 5c1e57596ae0698da0c524154bc176e3a68ac63c /Modules/threadmodule.c | |
| parent | fbd30e915953c471c9f364249c3b10f26ee30a2b (diff) | |
| download | cpython-385e7c69198510a1aa3a50c82f0d458eb34cc5e6.zip cpython-385e7c69198510a1aa3a50c82f0d458eb34cc5e6.tar.gz cpython-385e7c69198510a1aa3a50c82f0d458eb34cc5e6.tar.bz2 | |
implement exit_thread through SystemExit exception
Diffstat (limited to 'Modules/threadmodule.c')
| -rw-r--r-- | Modules/threadmodule.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/Modules/threadmodule.c b/Modules/threadmodule.c index 9cb4cba..befe6a2 100644 --- a/Modules/threadmodule.c +++ b/Modules/threadmodule.c @@ -200,8 +200,12 @@ t_bootstrap(args_raw) res = call_object(func, arg); DECREF(args); /* Matches the INCREF(args) in thread_start_new_thread */ if (res == NULL) { - fprintf(stderr, "Unhandled exception in thread:\n"); - print_error(); /* From pythonmain.c */ + if (err_occurred() == SystemExit) + err_clear(); + else { + fprintf(stderr, "Unhandled exception in thread:\n"); + print_error(); /* From pythonmain.c */ + } } else DECREF(res); @@ -236,13 +240,10 @@ thread_exit_thread(self, args) object *self; /* Not used */ object *args; { - object *frame; if (!getnoarg(args)) return NULL; - frame = save_thread(); /* Should never be NULL */ - DECREF(frame); - exit_thread(); - for (;;) { } /* Should not be reached */ + err_set(SystemExit); + return NULL; } #ifndef NO_EXIT_PROG |
