[PATCH 1/2] msvcrt: Lazily initialize console handles.
Rémi Bernon
rbernon at codeweavers.com
Fri Mar 12 06:31:02 CST 2021
On 3/12/21 1:27 PM, Piotr Caban wrote:
> Hi Rémi,
>
> On 3/12/21 11:02 AM, Rémi Bernon wrote:
>> +static HANDLE msvcrt_input_console(void)
>> {
>
>> + HANDLE console;
>> + LOCK_CONSOLE;
>> + if (!MSVCRT_console_in)
>> + {
>> + MSVCRT_console_in = CreateFileA("CONIN$",
>> GENERIC_WRITE|GENERIC_READ,
>> + FILE_SHARE_WRITE|FILE_SHARE_READ,
>> + NULL, OPEN_EXISTING, 0, NULL);
>> + if (MSVCRT_console_in == INVALID_HANDLE_VALUE)
>> + WARN("Input console handle initialization failed!\n");
>> + }
>> + console = MSVCRT_console_in;
>> + UNLOCK_CONSOLE;
>> + return console;
>> +}
> I think that the caller should be responsible for locking. It's
> especially important for the _nolock functions that shouldn't lock at all.
>
> Thanks,
> Piotr
Ah alright, so how should these be handled? We could also probably make
the helper lockfree with interlocked exchange.
--
Rémi Bernon <rbernon at codeweavers.com>
More information about the wine-devel
mailing list