summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Bertalan <dani@danielbertalan.dev>2022-01-15 14:41:39 +0100
committerBrian Gianforcaro <b.gianfo@gmail.com>2022-01-16 14:59:21 -0800
commita1dfa1efb2da5b79683e8cc00706d12e0fe1bcf7 (patch)
tree60389cf27b150e196e4b39d4712d34ad3cadbb59
parent6a6dbf5b0b23ce59ae4462f9aef93434f94f0226 (diff)
downloadserenity-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.cpp3
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();