diff --git a/dlls/msvcrt/scanf.h b/dlls/msvcrt/scanf.h index 0903d6909ae..1058a7a911a 100644 --- a/dlls/msvcrt/scanf.h +++ b/dlls/msvcrt/scanf.h @@ -309,6 +309,9 @@ _FUNCTION_ { if (I64_prefix) _SET_NUMBER_(LONGLONG); else if (l_prefix) _SET_NUMBER_(LONG); else if (h_prefix == 1) _SET_NUMBER_(short int); +#if _MSVCR_VER >= 140 + else if (h_prefix == 2) _SET_NUMBER_(char); +#endif else _SET_NUMBER_(int); } } diff --git a/dlls/ucrtbase/tests/scanf.c b/dlls/ucrtbase/tests/scanf.c index 7f44b7f1adf..bf886e7d61f 100644 --- a/dlls/ucrtbase/tests/scanf.c +++ b/dlls/ucrtbase/tests/scanf.c @@ -188,7 +188,7 @@ static void test_sscanf(void) result = 0xdeadbeef; ret = vsscanf_wrapper(tests[i], "12345678", "%hhd", &result); ok(ret == 1, "sscanf returned %d for flags %#x\n", ret, tests[i]); - todo_wine ok(result == 0xdeadbe4e, "got wrong number %#x for flags %#x\n", result, tests[i]); + ok(result == 0xdeadbe4e, "got wrong number %#x for flags %#x\n", result, tests[i]); ret = vsscanf_wrapper(tests[i], "12345678901234", "%lld", &result64); ok(ret == 1, "sscanf returned %d for flags %#x\n", ret, tests[i]);