diff options
Diffstat (limited to 'libc/stdlib/abort.c')
-rw-r--r-- | libc/stdlib/abort.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/libc/stdlib/abort.c b/libc/stdlib/abort.c index 8db2ed025..dfb50e2f6 100644 --- a/libc/stdlib/abort.c +++ b/libc/stdlib/abort.c @@ -46,7 +46,7 @@ Cambridge, MA 02139, USA. */ #define ABORT_INSTRUCTION #endif -extern void weak_function __stdio_flush_buffers(void); +extern void weak_function _stdio_term(void); extern void _exit __P((int __status)) __attribute__ ((__noreturn__)); static int been_there_done_that = 0; @@ -60,9 +60,12 @@ void abort(void) sigprocmask(SIG_UNBLOCK, &sigset, (sigset_t *) NULL); } - /* If we are using stdio, flush all open streams */ - if (__stdio_flush_buffers) - __stdio_flush_buffers(); + /* If we are using stdio, try to shut it down. At the very least, + * this will attempt to commit all buffered writes. It may also + * unbuffer all writable files, or close them outright. + * Check the stdio routines for details. */ + if (_stdio_term) + _stdio_term(); while (1) { /* Try to suicide with a SIGABRT. */ |