BUG #18219: libpq does not take into consideration UNICODE define

From: PG Bug reporting form <noreply(at)postgresql(dot)org>
To: pgsql-bugs(at)lists(dot)postgresql(dot)org
Cc: 2janbrezina(at)gmail(dot)com
Subject: BUG #18219: libpq does not take into consideration UNICODE define
Date: 2023-11-30 15:23:23
Message-ID: 18219-e052656ac68bab94@postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

The following bug has been logged on the website:

Bug reference: 18219
Logged by: Jan Březina
Email address: 2janbrezina(at)gmail(dot)com
PostgreSQL version: 16.0
Operating system: Windows
Description:

I use libpqxx via vcpkg in Windows project build for x64 system using Visual
Studio. There is a UNICODE define, which causes **W Windows functions to be
used and hence string parameters should be passed in using L"...".
I have sslrootcert file used in my connection string. During the connection
initialization stat() function is invoked for the file. It is implemented in
win32stat.c, which then invokes pgwin32_open_handle() (open.c) and then
initialize_ntdll() (win32ntdll.c) is invoked. There is a use of
LoadLibraryEx which is just a define above LoadLibraryExA or LoadLibraryExW.
Using UNICODE implies LoadLibraryExW to be used, but the parameter passed in
is char*, not wchar_t*. This leads to failed initialization returning error
code 126 - The specified module could not be found.
There should be a switch if UNICODE is defined, then L"ntdll.dll" should be
passed in. The same applies to all other Windows functions consuming
strings.

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Thomas Munro 2023-11-30 19:20:19 Re: BUG #18219: libpq does not take into consideration UNICODE define
Previous Message Şeyma Alkan 2023-11-30 13:36:25 Re: BUG #18198: Constantly getting errors