Skip to content

Commit

Permalink
common-main.c: fflush stdout buffer when exit
Browse files Browse the repository at this point in the history
By default, the buffer type of Windows' stdout is no buffer (_IONBF), and there is no need to manually fflush stdout. But some program, such as Windows Filtering Platform driver provided by the security software, may change the buffer type of stdout to Full buffering. Therefore, fflush(stdout) needs to be called manually, otherwise there will be no output to stdout.
According to common sense, when the program exits, the stdout buffer should be automatically output and released, but not on Windows. So this commit will do it.

Signed-off-by: MinarKotonoha <chengzhuo5@qq.com>
  • Loading branch information
chengzhuo5 committed Apr 8, 2024
1 parent ad0bbff commit a80c804
Showing 1 changed file with 7 additions and 0 deletions.
7 changes: 7 additions & 0 deletions common-main.c
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,13 @@ static void check_bug_if_BUG(void)
/* We wrap exit() to call common_exit() in git-compat-util.h */
int common_exit(const char *file, int line, int code)
{
/*
* Windows Filtering Platform driver provided by the security software
* may change buffer type of stdout from _IONBF to _IOFBF.
* It will no output without fflush manually.
*/
fflush(stdout);

/*
* For non-POSIX systems: Take the lowest 8 bits of the "code"
* to e.g. turn -1 into 255. On a POSIX system this is
Expand Down

0 comments on commit a80c804

Please sign in to comment.