From 2a6171fce9246aff728071c96fa089b025d425f0 Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Mon, 10 Jun 2019 20:19:50 -0400 Subject: [PATCH] ucrtbase: Write the %hh prefix as a single char. This fixes a crash in Planet Coaster on startup. Signed-off-by: Zebediah Figura Signed-off-by: Piotr Caban Signed-off-by: Alexandre Julliard (cherry picked from commit 9445bed2981c5a68a57c749b9354649980a31c39) Signed-off-by: Michael Stefaniuc --- dlls/msvcrt/scanf.h | 3 +++ dlls/ucrtbase/tests/scanf.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) 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]);