Skip to content

Commit 4a08f0c

Browse files
committed
mingw: use Unicode functions explicitly
For many Win32 functions, there actually exist two variants: one with the `A` suffix that takes ANSI parameters (`char *` or `const char *`) and one with the `W` suffix that takes Unicode parameters (`wchar_t *` or `const wchar_t *`). It is actually highly encouraged to use the Unicode versions, so let's do precisely that. Signed-off-by: Johannes Schindelin <[email protected]>
1 parent e091855 commit 4a08f0c

File tree

3 files changed

+8
-6
lines changed

3 files changed

+8
-6
lines changed

compat/mingw.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1407,7 +1407,7 @@ static pid_t mingw_spawnve_fd(const char *cmd, const char **argv, char **deltaen
14071407
do_unset_environment_variables();
14081408

14091409
/* Determine whether or not we are associated to a console */
1410-
cons = CreateFile("CONOUT$", GENERIC_WRITE,
1410+
cons = CreateFileW(L"CONOUT$", GENERIC_WRITE,
14111411
FILE_SHARE_WRITE, NULL, OPEN_EXISTING,
14121412
FILE_ATTRIBUTE_NORMAL, NULL);
14131413
if (cons == INVALID_HANDLE_VALUE) {

compat/poll/poll.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ win32_compute_revents (HANDLE h, int *p_sought)
150150
if (!once_only)
151151
{
152152
NtQueryInformationFile = (PNtQueryInformationFile)
153-
GetProcAddress (GetModuleHandle ("ntdll.dll"),
153+
GetProcAddress (GetModuleHandleW (L"ntdll.dll"),
154154
"NtQueryInformationFile");
155155
once_only = TRUE;
156156
}

compat/winansi.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -599,7 +599,7 @@ int winansi_isatty(int fd)
599599
void winansi_init(void)
600600
{
601601
int con1, con2;
602-
char name[32];
602+
wchar_t name[32];
603603

604604
/* check if either stdout or stderr is a console output screen buffer */
605605
con1 = is_console(1);
@@ -619,13 +619,15 @@ void winansi_init(void)
619619
}
620620

621621
/* create a named pipe to communicate with the console thread */
622-
xsnprintf(name, sizeof(name), "\\\\.\\pipe\\winansi%lu", GetCurrentProcessId());
623-
hwrite = CreateNamedPipe(name, PIPE_ACCESS_OUTBOUND,
622+
if (swprintf(name, ARRAY_SIZE(name) - 1, L"\\\\.\\pipe\\winansi%lu",
623+
GetCurrentProcessId()) < 0)
624+
die("Could not initialize winansi pipe name");
625+
hwrite = CreateNamedPipeW(name, PIPE_ACCESS_OUTBOUND,
624626
PIPE_TYPE_BYTE | PIPE_WAIT, 1, BUFFER_SIZE, 0, 0, NULL);
625627
if (hwrite == INVALID_HANDLE_VALUE)
626628
die_lasterr("CreateNamedPipe failed");
627629

628-
hread = CreateFile(name, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
630+
hread = CreateFileW(name, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
629631
if (hread == INVALID_HANDLE_VALUE)
630632
die_lasterr("CreateFile for named pipe failed");
631633

0 commit comments

Comments
 (0)