diff options
author | Daniel Bertalan <dani@danielbertalan.dev> | 2022-01-15 14:41:39 +0100 |
---|---|---|
committer | Brian Gianforcaro <b.gianfo@gmail.com> | 2022-01-16 14:59:21 -0800 |
commit | a1dfa1efb2da5b79683e8cc00706d12e0fe1bcf7 (patch) | |
tree | 60389cf27b150e196e4b39d4712d34ad3cadbb59 | |
parent | 6a6dbf5b0b23ce59ae4462f9aef93434f94f0226 (diff) | |
download | serenity-a1dfa1efb2da5b79683e8cc00706d12e0fe1bcf7.zip |
LibC: Flush all file streams on exit
The POSIX standard specifies the following:
> If the main() function returns to its original caller, or if the
> exit() function is called, all open files are closed (hence all output
> streams are flushed) before program termination.
This means that flushing `stdin` and `stdout` only is not enough, as the
program might have pending writes in other file buffers too.
Now that we support `fflush(nullptr)`, we call that in `exit()` to flush
all streams. This fixes one of bash's generated headers not being
written to disk.
-rw-r--r-- | Userland/Libraries/LibC/stdlib.cpp | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/Userland/Libraries/LibC/stdlib.cpp b/Userland/Libraries/LibC/stdlib.cpp index 713373fad9..580ffd630c 100644 --- a/Userland/Libraries/LibC/stdlib.cpp +++ b/Userland/Libraries/LibC/stdlib.cpp @@ -189,8 +189,7 @@ void exit(int status) extern void _fini(); _fini(); - fflush(stdout); - fflush(stderr); + fflush(nullptr); #ifndef _DYNAMIC_LOADER __pthread_key_destroy_for_current_thread(); |