programs/regsvr32: Output strings as WCHAR to support non-ascii characters

Bruno Jesus 00cpxxx at gmail.com
Mon May 25 10:06:43 CDT 2015


Fixes https://bugs.winehq.org/show_bug.cgi?id=38638
-------------- next part --------------
diff --git a/programs/regsvr32/regsvr32.c b/programs/regsvr32/regsvr32.c
index 624acd6..94a9a02 100644
--- a/programs/regsvr32/regsvr32.c
+++ b/programs/regsvr32/regsvr32.c
@@ -67,14 +67,14 @@ static BOOL Silent = FALSE;
 
 static void __cdecl output_write(UINT id, ...)
 {
-    char fmt[1024];
+    WCHAR fmt[1024];
     __ms_va_list va_args;
-    char *str;
+    WCHAR *str;
     DWORD len, nOut, ret;
 
     if (Silent) return;
 
-    if (!LoadStringA(GetModuleHandleA(NULL), id, fmt, sizeof(fmt)/sizeof(fmt[0])))
+    if (!LoadStringW(GetModuleHandleW(NULL), id, fmt, sizeof(fmt)/sizeof(fmt[0])))
     {
         WINE_FIXME("LoadString failed with %d\n", GetLastError());
         return;
@@ -82,16 +82,16 @@ static void __cdecl output_write(UINT id, ...)
 
     __ms_va_start(va_args, id);
     SetLastError(NO_ERROR);
-    len = FormatMessageA(FORMAT_MESSAGE_FROM_STRING|FORMAT_MESSAGE_ALLOCATE_BUFFER,
-                         fmt, 0, 0, (LPSTR)&str, 0, &va_args);
+    len = FormatMessageW(FORMAT_MESSAGE_FROM_STRING|FORMAT_MESSAGE_ALLOCATE_BUFFER,
+                         fmt, 0, 0, (LPWSTR) &str, 0, &va_args);
     __ms_va_end(va_args);
     if (len == 0 && GetLastError() != NO_ERROR)
     {
-        WINE_FIXME("Could not format string: le=%u, fmt=%s\n", GetLastError(), wine_dbgstr_a(fmt));
+        WINE_FIXME("Could not format string: le=%u, fmt=%s\n", GetLastError(), wine_dbgstr_w(fmt));
         return;
     }
 
-    ret = WriteConsoleA(GetStdHandle(STD_OUTPUT_HANDLE), str, len, &nOut, NULL);
+    ret = WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), str, len, &nOut, NULL);
 
     if (!ret)
         WINE_WARN("regsvr32: WriteConsoleA() failed.\n");


More information about the wine-patches mailing list