summaryrefslogtreecommitdiff
path: root/src/unistd/fsync.c
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2015-07-24 21:15:49 +0000
committerRich Felker <dalias@aerifal.cx>2015-07-24 21:22:43 +0000
commit57243b30214656e7dd9fff509a1b6370b712f863 (patch)
tree7ef562b56739ce7732d083793ae151cc042ad103 /src/unistd/fsync.c
parent3975577922aedab7d60788dd320a2c8e4e94bc6e (diff)
downloadmusl-57243b30214656e7dd9fff509a1b6370b712f863.tar.gz
musl-57243b30214656e7dd9fff509a1b6370b712f863.tar.bz2
musl-57243b30214656e7dd9fff509a1b6370b712f863.tar.xz
musl-57243b30214656e7dd9fff509a1b6370b712f863.zip
fix atexit when it is called from an atexit handler
The old code accepted atexit handlers after exit, but did not run them reliably. C11 seems to explicitly allow atexit to fail (and report such failure) in this case, but this situation can easily come up in C++ if a destructor has a local static object with a destructor so it should be handled. Note that the memory usage can grow linearly with the overall number of registered atexit handlers instead of with the worst case list length. (This only matters if atexit handlers keep registering atexit handlers which should not happen in practice). Commit message/rationale based on text by Szabolcs Nagy.
Diffstat (limited to 'src/unistd/fsync.c')
0 files changed, 0 insertions, 0 deletions