summaryrefslogtreecommitdiff
path: root/libc/stdlib
diff options
context:
space:
mode:
Diffstat (limited to 'libc/stdlib')
-rw-r--r--libc/stdlib/abort.c10
-rw-r--r--libc/stdlib/atexit.c12
2 files changed, 9 insertions, 13 deletions
diff --git a/libc/stdlib/abort.c b/libc/stdlib/abort.c
index 3ff235ae3..4c9f06a11 100644
--- a/libc/stdlib/abort.c
+++ b/libc/stdlib/abort.c
@@ -46,8 +46,7 @@ Cambridge, MA 02139, USA. */
#define ABORT_INSTRUCTION
#endif
-typedef void (*vfuncp) (void);
-extern vfuncp __uClibc_cleanup;
+extern void __stdio_flush_buffers(void);
extern void _exit __P((int __status)) __attribute__ ((__noreturn__));
static int been_there_done_that = 0;
@@ -61,10 +60,9 @@ void abort(void)
sigprocmask(SIG_UNBLOCK, &sigset, (sigset_t *) NULL);
}
- /* __uClibc_cleanup NULLs itself out after being called */
- if (__uClibc_cleanup) {
- __uClibc_cleanup();
- }
+ /* If we are using stdio, flush all open streams */
+ if (__stdio_flush_buffers)
+ __stdio_flush_buffers();
while (1) {
/* Try to suicide with a SIGABRT. */
diff --git a/libc/stdlib/atexit.c b/libc/stdlib/atexit.c
index 6c55e60ea..9164b2ac6 100644
--- a/libc/stdlib/atexit.c
+++ b/libc/stdlib/atexit.c
@@ -17,7 +17,7 @@
* Changed name of __cleanup to __uClibc_cleanup.
* Moved declaration of __uClibc_cleanup to __uClibc_main
* where it is initialized with (possibly weak alias)
- * __stdio_close_all.
+ * __stdio_flush_buffers.
*
* Jul 2001 Steve Thayer
*
@@ -44,7 +44,7 @@ typedef enum {
ef_on_exit
} ef_type; /* exit function types */
-extern void __stdio_close_all(void);
+extern void __stdio_flush_buffers(void);
/* this is in the L_exit object */
extern void (*__exit_cleanup) (int);
@@ -139,13 +139,11 @@ void __exit_handler(int status)
break;
}
}
- if (__stdio_close_all)
- __stdio_close_all();
}
#endif
#ifdef L_exit
-extern void (*__uClibc_cleanup) (void);
+extern void __stdio_flush_buffers(void);
void (*__exit_cleanup) (int) = 0;
/*
@@ -159,8 +157,8 @@ void exit(int rv)
}
/* Clean up everything else */
- if (__uClibc_cleanup)
- __uClibc_cleanup();
+ if (__stdio_flush_buffers)
+ __stdio_flush_buffers();
_exit(rv);
}