summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libc/stdlib/abort.c11
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. */