From: Bartosz Kosiorek gang65@poczta.onet.pl
--- dlls/msvcrt/scanf.h | 3 +++ dlls/ucrtbase/tests/scanf.c | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/dlls/msvcrt/scanf.h b/dlls/msvcrt/scanf.h index 97ecc578760..eba3459e2ac 100644 --- a/dlls/msvcrt/scanf.h +++ b/dlls/msvcrt/scanf.h @@ -199,6 +199,9 @@ _FUNCTION_ { pthreadlocinfo locinfo; int rd = 0, consumed = 0; int nch; + + if (!MSVCRT_CHECK_PMT(format)) + return _EOF_RET; if (!*format) return 0; #ifndef WIDE_SCANF #ifdef CONSOLE diff --git a/dlls/ucrtbase/tests/scanf.c b/dlls/ucrtbase/tests/scanf.c index e7398c6e972..d0891ab0af8 100644 --- a/dlls/ucrtbase/tests/scanf.c +++ b/dlls/ucrtbase/tests/scanf.c @@ -63,8 +63,8 @@ static void test_sscanf(void) { errno = 0xdeadbeef; ret = vsscanf_wrapper(tests[i], "0046F171", -1, NULL, &ptr); - todo_wine ok(ret == EOF, "sscanf returned %d for flags %#x\n", ret, tests[i]); - todo_wine ok(errno == EINVAL, "Unexpected errno %d.\n", errno); + ok(ret == EOF, "sscanf returned %d for flags %#x\n", ret, tests[i]); + ok(errno == EINVAL, "Unexpected errno %d.\n", errno);
ret = vsscanf_wrapper(tests[i], "", -1, "%d", &result); ok(ret == EOF, "sscanf returned %d for flags %#x\n", ret, tests[i]);