fix bug whereby most atexit-registered functions got skipped
authorRich Felker <dalias@aerifal.cx>
Mon, 20 Aug 2012 00:48:16 +0000 (20:48 -0400)
committerRich Felker <dalias@aerifal.cx>
Mon, 20 Aug 2012 00:48:16 +0000 (20:48 -0400)
src/exit/atexit.c

index 1b40cb9..c31f3dc 100644 (file)
@@ -21,9 +21,8 @@ void __funcs_on_exit()
        int i;
        void (*func)(void *), *arg;
        LOCK(lock);
-       for (; head; head=head->next) {
-               for (i=COUNT-1; i>=0 && !head->f[i]; i--);
-               if (i<0) continue;
+       for (; head; head=head->next) for (i=COUNT-1; i>=0; i--) {
+               if (!head->f[i]) continue;
                func = head->f[i];
                arg = head->a[i];
                head->f[i] = 0;