diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2021-02-19 18:12:37 +0100 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2021-02-19 18:12:41 +0100 |
commit | 543e39bb129ac77e29e3800a468100a754ad3d2a (patch) | |
tree | 8a63fb00293a6a6abdbaf15ed2e1461b3f11b0af | |
parent | b56a371436192c965984013682043412cb22fc57 (diff) | |
download | cygnal-543e39bb129ac77e29e3800a468100a754ad3d2a.tar.gz cygnal-543e39bb129ac77e29e3800a468100a754ad3d2a.tar.bz2 cygnal-543e39bb129ac77e29e3800a468100a754ad3d2a.zip |
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 <corinna@vinschen.de>
-rw-r--r-- | winsup/cygwin/fhandler.h | 3 |
1 files changed, 2 insertions, 1 deletions
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)); } |