diff options
author | Eric Andersen <andersen@codepoet.org> | 2002-02-18 08:50:08 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2002-02-18 08:50:08 +0000 |
commit | 5ce7dc9543896883a3e30a1e6676c9f4c215f382 (patch) | |
tree | 8e73a99319526176a3fc166bf339c21c5402c074 | |
parent | c35cde1edbe9d3375ed880fe8bb7d0fffba2f000 (diff) |
Miles Bader writes:
Programs that don't use stdio crash in the `exit' function, because
they call through the pointer__uClibc_cleanup, which has a value of 0.
It has a value of 0 because __uClibc_main.c initializes it to the
address of `__stdio_close_all', which is a weak symbol (and so is 0 if
stdio is not used).
This patch from Miles fixes it, though we need to audit
__stdio_close_all usage to be sure...
-rw-r--r-- | libc/stdlib/atexit.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/libc/stdlib/atexit.c b/libc/stdlib/atexit.c index d7be35fbd..af739d52b 100644 --- a/libc/stdlib/atexit.c +++ b/libc/stdlib/atexit.c @@ -159,7 +159,8 @@ void exit(int rv) } /* Clean up everything else */ - __uClibc_cleanup(); + if (__uClibc_cleanup) { + __uClibc_cleanup(); _exit(rv); } |