Commit e98dbf2e authored by Akihiro Sagawa's avatar Akihiro Sagawa Committed by Alexandre Julliard

user32: Fix wsprintfW %C conversion.

parent 20ff7ad9
...@@ -187,17 +187,17 @@ static void wsprintfWTest(void) ...@@ -187,17 +187,17 @@ static void wsprintfWTest(void)
wcA1 = my_btowc(0xA1); wcA1 = my_btowc(0xA1);
rc = wsprintfW(buf, L"%C", 0xA1); rc = wsprintfW(buf, L"%C", 0xA1);
ok(rc == 1, "expected 1, got %d\n", rc); ok(rc == 1, "expected 1, got %d\n", rc);
todo_wine ok(buf[0] == wcA1, "expected \\x%04x, got \\x%04x\n", wcA1, buf[0]); ok(buf[0] == wcA1, "expected \\x%04x, got \\x%04x\n", wcA1, buf[0]);
rc = wsprintfW(buf, L"%C", 0x81A1); rc = wsprintfW(buf, L"%C", 0x81A1);
ok(rc == 1, "expected 1, got %d\n", rc); ok(rc == 1, "expected 1, got %d\n", rc);
todo_wine ok(buf[0] == wcA1, "expected \\x%04x, got \\x%04x\n", wcA1, buf[0]); ok(buf[0] == wcA1, "expected \\x%04x, got \\x%04x\n", wcA1, buf[0]);
wc99 = my_btowc(0x99); wc99 = my_btowc(0x99);
rc = wsprintfW(buf, L"%2C", 0xe199); rc = wsprintfW(buf, L"%2C", 0xe199);
ok(rc == 2, "expected 1, got %d\n", rc); ok(rc == 2, "expected 1, got %d\n", rc);
ok(buf[0] == L' ', "expected \\x0020, got \\x%04x\n", buf[0]); ok(buf[0] == L' ', "expected \\x0020, got \\x%04x\n", buf[0]);
todo_wine ok(buf[1] == wc99, "expected \\x%04x, got \\x%04x\n", wc99, buf[1]); ok(buf[1] == wc99, "expected \\x%04x, got \\x%04x\n", wc99, buf[1]);
if (!GetCPInfoExW(CP_ACP, 0, &cpinfoex) || cpinfoex.MaxCharSize <= 1) if (!GetCPInfoExW(CP_ACP, 0, &cpinfoex) || cpinfoex.MaxCharSize <= 1)
{ {
......
...@@ -513,8 +513,15 @@ static INT wvsnprintfW( LPWSTR buffer, UINT maxlen, LPCWSTR spec, __ms_va_list a ...@@ -513,8 +513,15 @@ static INT wvsnprintfW( LPWSTR buffer, UINT maxlen, LPCWSTR spec, __ms_va_list a
*p++ = argData.wchar_view; *p++ = argData.wchar_view;
break; break;
case WPR_CHAR: case WPR_CHAR:
*p++ = argData.char_view; {
break; WCHAR wc;
if (!IsDBCSLeadByte( (BYTE)argData.char_view )
&& MultiByteToWideChar( CP_ACP, 0, &argData.char_view, 1, &wc, 1 ) > 0)
*p++ = wc;
else
*p++ = 0;
break;
}
case WPR_STRING: case WPR_STRING:
{ {
LPCSTR ptr = argData.lpcstr_view; LPCSTR ptr = argData.lpcstr_view;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment