]> git.saurik.com Git - apple/libc.git/blobdiff - stdlib/FreeBSD/exit.c.patch
Libc-594.9.1.tar.gz
[apple/libc.git] / stdlib / FreeBSD / exit.c.patch
index c7f7c9bfe4699c6718f2eac2c6a2a3981348c807..0524eb0e5df03f906608dc0fe9d6f75fea41d3ec 100644 (file)
@@ -1,9 +1,11 @@
---- exit.c.orig        Mon Apr 28 16:37:26 2003
-+++ exit.c     Sat May  3 14:28:31 2003
-@@ -46,15 +46,6 @@
- void (*__cleanup)();
+--- exit.c.orig        2006-08-08 16:13:56.000000000 -0700
++++ exit.c     2006-08-11 22:12:56.000000000 -0700
+@@ -44,15 +44,7 @@
+ #include "atexit.h"
  
- /*
+ void (*__cleanup)();
+-
+-/*
 - * This variable is zero until a process has created a thread.
 - * It is used to avoid calling locking functions in libc when they
 - * are not required. By default, libc is intended to be(come)
 - * processes.
 - */
 -int   __isthreaded    = 0;
--
--/*
++extern void __exit(int);
+ /*
   * Exit, flushing stdio buffers if necessary.
-  */
- void
-@@ -63,11 +54,6 @@
+@@ -61,13 +53,8 @@
+ exit(status)
+       int status;
  {
-       struct atexit *p;
-       int n;
--
 -      /* Ensure that the auto-initialization routine is linked in: */
 -      extern int _thread_autoinit_dummy_decl;
 -
 -      _thread_autoinit_dummy_decl = 1;
-       for (p = __atexit; p; p = p->next)
-               for (n = p->ind; --n >= 0;)
+-
+       __cxa_finalize(NULL);
+       if (__cleanup)
+               (*__cleanup)();
+-      _exit(status);
++      __exit(status);
+ }