Skip to content

Commit

Permalink
common-main.c: fflush stdout buffer upon exit
Browse files Browse the repository at this point in the history
By default, the buffer type of Windows' `stdout` is unbuffered (_IONBF),
and there is no need to manually fflush `stdout`.

But some programs, such as the Windows Filtering Platform driver
provided by the security software, may change the buffer type of
`stdout` to full buffering. This nees `fflush(stdout)` to be called
manually, otherwise there will be no output to `stdout`.

Signed-off-by: MinarKotonoha <chengzhuo5@qq.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
  • Loading branch information
chengzhuo5 authored and dscho committed Sep 24, 2024
1 parent c71be29 commit db40bb9
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 @@ -77,6 +77,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 db40bb9

Please sign in to comment.