diff options
Diffstat (limited to 'libc/stdlib')
| -rw-r--r-- | libc/stdlib/abort.c | 10 | ||||
| -rw-r--r-- | libc/stdlib/atexit.c | 12 | 
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);  } | 
