1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-14 08:34:57 +00:00

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.
This commit is contained in:
Daniel Bertalan 2022-01-15 14:41:39 +01:00 committed by Brian Gianforcaro
parent 6a6dbf5b0b
commit a1dfa1efb2

View file

@ -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();