From: Eric Pouech epouech@codeweavers.com
Signed-off-by: Eric Pouech epouech@codeweavers.com --- dlls/msvcrt/file.c | 6 ++++++ dlls/ucrtbase/tests/file.c | 6 ++---- 2 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c index a3a872d4be3..24cca6fb63e 100644 --- a/dlls/msvcrt/file.c +++ b/dlls/msvcrt/file.c @@ -830,9 +830,15 @@ int CDECL _isatty(int fd) /* INTERNAL: Allocate stdio file buffer */ static BOOL msvcrt_alloc_buffer(FILE* file) { +#if _MSVCR_VER >= 140 + if((file->_file==STDOUT_FILENO && _isatty(file->_file)) + || file->_file == STDERR_FILENO) + return FALSE; +#else if((file->_file==STDOUT_FILENO || file->_file==STDERR_FILENO) && _isatty(file->_file)) return FALSE; +#endif
file->_base = calloc(1, MSVCRT_INTERNAL_BUFSIZ); if(file->_base) { diff --git a/dlls/ucrtbase/tests/file.c b/dlls/ucrtbase/tests/file.c index 97f2f82ff75..1fad7577be6 100644 --- a/dlls/ucrtbase/tests/file.c +++ b/dlls/ucrtbase/tests/file.c @@ -182,7 +182,6 @@ static void test_std_buffer_state(const char *selfname) /* output */ enum buffer_state std_buffer_state[3]; int broken_stderr; /* win7,8 and early win10 require it (at least on files) */ - BOOL with_todo; } test_file_type[] = { @@ -190,10 +189,10 @@ static void test_std_buffer_state(const char *selfname) /* Note: wine/test.h calls set_vbuf(_IONBF) (even in child) * hence the result BS_CHAR_BUFFER for stdout without reopen */ - {H_FILE, {BS_FULL_BUFFER, BS_CHAR_BUFFER, BS_NO_BUFFER}, BS_FULL_BUFFER, TRUE}, + {H_FILE, {BS_FULL_BUFFER, BS_CHAR_BUFFER, BS_NO_BUFFER}, BS_FULL_BUFFER}, {H_NUL, {BS_FULL_BUFFER, BS_CHAR_BUFFER, BS_NO_BUFFER}, -1}, /* reopen in child */ - {H_FILE | H_REOPEN, {BS_FULL_BUFFER, BS_FULL_BUFFER, BS_NO_BUFFER}, BS_FULL_BUFFER, TRUE}, + {H_FILE | H_REOPEN, {BS_FULL_BUFFER, BS_FULL_BUFFER, BS_NO_BUFFER}, BS_FULL_BUFFER}, {H_NUL | H_REOPEN, {BS_FULL_BUFFER, BS_NO_BUFFER, BS_NO_BUFFER}, -1}, }; char cmdline[MAX_PATH]; @@ -262,7 +261,6 @@ static void test_std_buffer_state(const char *selfname) test_file_type[i].std_buffer_state[1] << 2 | test_file_type[i].broken_stderr << 4;
- todo_wine_if( test_file_type[i].with_todo ) ok( exit_code == expected_exit_code || broken(exit_code == broken_exit_code), "Unexpected buffer state %lx: stdin=%lx/%x, stdout=%lx/%x, stderr=%lx/%x\n", exit_code >> 6,