Module: wine Branch: master Commit: 53bc6c7a4a416252559a2a174821001fdd576c6f URL: https://gitlab.winehq.org/wine/wine/-/commit/53bc6c7a4a416252559a2a174821001...
Author: Michel Zou xantares09@hotmail.com Date: Sat Nov 26 18:27:52 2022 +0100
msvcrt: Fix errno set on dup from read-only file.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53950
---
dlls/msvcrt/file.c | 1 + dlls/msvcrt/tests/file.c | 6 ++++++ 2 files changed, 7 insertions(+)
diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c index 4a8c3510bd7..e72784eef41 100644 --- a/dlls/msvcrt/file.c +++ b/dlls/msvcrt/file.c @@ -1244,6 +1244,7 @@ int CDECL _dup2(int od, int nd)
if (info_nd == &MSVCRT___badioinfo) { + *_errno() = EBADF; ret = -1; } else if (info_od->wxflag & WX_OPEN) diff --git a/dlls/msvcrt/tests/file.c b/dlls/msvcrt/tests/file.c index de21d11d0b9..3f57b3f871f 100644 --- a/dlls/msvcrt/tests/file.c +++ b/dlls/msvcrt/tests/file.c @@ -267,6 +267,12 @@ static void test_readmode( BOOL ascii_mode )
close (fd);
+ fd = open ("fdopen.tst", O_RDONLY, _S_IREAD |_S_IWRITE); + errno = 0xdeadbeef; + ok(dup2(fd, -1) == -1, "dup2(fd, -1) succeeded\n"); + ok(errno == EBADF, "errno = %d\n", errno); + close (fd); + if (ascii_mode) { /* Open file in ascii mode */ fd = open ("fdopen.tst", O_RDONLY);