https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=543e39bb129ac77e29e3800a468100a754ad3d2a
commit 543e39bb129ac77e29e3800a468100a754ad3d2a Author: Corinna Vinschen <[email protected]> Date: Fri Feb 19 18:12:37 2021 +0100 Cygwin: default to O_BINARY in fhandler_base::reset_to_open_binmode() This only affects the very seldom bordercase of apps calling setmode(fd, 0) on fhandlers not calling fhandler_base::set_open_status(). All fhandlers not calling set_open_status() are binary mode only, but the way reset_to_open_binmode worked, calling setmode(fd, 0) would have "reset" their open flags to O_TEXT accidentally. Signed-off-by: Corinna Vinschen <[email protected]> Diff: --- winsup/cygwin/fhandler.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/fhandler.h b/winsup/cygwin/fhandler.h index 5d095d384..12c45a5d7 100644 --- a/winsup/cygwin/fhandler.h +++ b/winsup/cygwin/fhandler.h @@ -274,7 +274,8 @@ class fhandler_base void reset_to_open_binmode () { set_flags ((get_flags () & ~(O_TEXT | O_BINARY)) - | ((open_status.wbinary || open_status.rbinary) + | (((open_status.wbinset ? open_status.wbinary : 1) + || (open_status.rbinset ? open_status.rbinary : 1)) ? O_BINARY : O_TEXT)); }
