Browse Source

Call _exit() not exit() from abort() if we are unable to kill ourselves

to avoid flushing stdio twice.  This code path should never really
happen though.  Also make the function declaration ANSI.  OK deraadt@
OPENBSD_3_5
millert 21 years ago
parent
commit
cb3adf3a9c
1 changed files with 3 additions and 3 deletions
  1. +3
    -3
      src/lib/libc/stdlib/abort.c

+ 3
- 3
src/lib/libc/stdlib/abort.c View File

@ -28,7 +28,7 @@
*/ */
#if defined(LIBC_SCCS) && !defined(lint) #if defined(LIBC_SCCS) && !defined(lint)
static char *rcsid = "$OpenBSD: abort.c,v 1.12 2003/06/02 20:18:37 millert Exp $";
static char *rcsid = "$OpenBSD: abort.c,v 1.13 2004/01/20 19:35:17 millert Exp $";
#endif /* LIBC_SCCS and not lint */ #endif /* LIBC_SCCS and not lint */
#include <signal.h> #include <signal.h>
@ -38,7 +38,7 @@ static char *rcsid = "$OpenBSD: abort.c,v 1.12 2003/06/02 20:18:37 millert Exp $
#include "atexit.h" #include "atexit.h"
void void
abort()
abort(void)
{ {
struct atexit *p = __atexit; struct atexit *p = __atexit;
static int cleanup_called = 0; static int cleanup_called = 0;
@ -74,5 +74,5 @@ abort()
(void)signal(SIGABRT, SIG_DFL); (void)signal(SIGABRT, SIG_DFL);
(void)_thread_sys_sigprocmask(SIG_SETMASK, &mask, (sigset_t *)NULL); (void)_thread_sys_sigprocmask(SIG_SETMASK, &mask, (sigset_t *)NULL);
(void)kill(getpid(), SIGABRT); (void)kill(getpid(), SIGABRT);
exit(1);
_exit(1);
} }

Loading…
Cancel
Save